2010-05-25 35 views
5

Làm cách nào để đặt, tạm thời, biến môi trường PYTHONPATH ngay trước khi thực thi tập lệnh Python?Tạm thời PYTHONPATH trong Windows

Trong * nix, tôi có thể làm điều này:

$ PYTHONPATH='.' python scripts/doit.py 

Trong Windows, cú pháp này không làm việc, tất nhiên. Tương đương là gì?

Trả lời

8

Để thiết lập và khôi phục lại một biến môi trường trên dòng lệnh của Windows đòi hỏi một cách tiếp cận không may "phần nào bị tra tấn" ...:

SET SAVE=%PYTHONPATH% 
SET PYTHONPATH=. 
python scripts/doit.py 
SET PYTHONPATH=%SAVE% 

Bạn có thể sử dụng một tập lệnh Python phụ trợ nhỏ để làm cho nó ít đau đớn hơn, ví dụ

import os 
import sys 
import subprocess 

for i, a in enumerate(sys.argv[1:]): 
    if '=' not in a: break 
    name, _, value = a.partition('=') 
    os.environ[name] = value 

sys.exit(subprocess.call(sys.argv[i:])) 

được gọi là, ví dụ,

python withenv.py PYTHONPATH=. python scripts/doit.py 

(Tôi đã được mã hóa nó để nó làm việc cho bất kỳ subprocess, không chỉ là một kịch bản Python - nếu bạn chỉ quan tâm đến kịch bản Python bạn có thể bỏ qua python thứ hai trong cal và đặt 'python' trong sys.argv[i-1] trong mã, sau đó sử dụng sys.argv[i-1:] làm đối số cho subprocess.call).

+0

Hm. Nhiều hơn một chút so với những gì tôi cần, nhưng cảm ơn! Tôi sẽ thử vào ngày mai. – Santa

1

Trong Windows, bạn có thể đặt PYTHONPATH làm biến môi trường, có giao diện người dùng GUI. Trên hầu hết các phiên bản của Windows, bạn có thể khởi chạy bằng cách kích chuột phải vào My Computer và kích chuột phải vào Properties.

1

Bạn sử dụng SET trên Windows:

SET PYTHONPATH=. 
python scripts/doit.py 
6

Tạm thời như thế nào? Nếu bạn mở một giao diện điều khiển Windows (cmd.exe), nhập:

set PYTHONPATH=. 

sẽ thay đổi PYTHONPATH cho bảng điều khiển đó và mọi tiến trình con được tạo ra từ đó. Bất kỳ tập lệnh python nào chạy từ bảng điều khiển này sẽ sử dụng giá trị PYTHONPATH mới. Đóng bàn điều khiển và thay đổi sẽ bị lãng quên.

Các vấn đề liên quan