2010-06-24 37 views

Trả lời

128

Bạn không đặt PYTHONPATH, bạn thêm các mục nhập vào sys.path. Đó là danh sách các thư mục cần được tìm kiếm cho các gói Python, vì vậy bạn chỉ có thể nối các thư mục của bạn vào danh sách đó.

sys.path.append('/path/to/whatever') 

Trong thực tế, sys.path được khởi tạo bằng cách phân chia giá trị của PYTHONPATH theo tính chất đường phân cách (: trên các hệ thống Linux như thế nào, ; trên Windows).

Bạn cũng có thể thêm thư mục bằng cách sử dụng site.addsitedir và phương pháp đó cũng sẽ tính đến các tệp .pth tồn tại trong các thư mục bạn vượt qua. (Điều đó sẽ không phải là trường hợp với các thư mục bạn chỉ định trong PYTHONPATH.)

+3

Đã nhiều năm kể từ khi câu trả lời này được đăng, nhưng tôi vẫn muốn thêm rằng nếu bạn muốn đảm bảo rằng Python kiểm tra thư mục mới trước tất cả các thư mục khác khi nhập, bạn nên đặt thư mục mới đầu tiên trong danh sách, như trong 'sys.path.insert (0, '/ path/to/whatever')'. – wecsam

25

Bạn có thể nhận và biến môi trường thiết lập thông qua os.environ:

import os 
user_home = os.environ["HOME"] 

os.environ["PYTHONPATH"] = "..." 

Nhưng kể từ phiên dịch của bạn đã chạy, điều này sẽ không có hiệu lực. Tốt hơn bạn nên sử dụng

import sys 
sys.path.append("...") 

đó là mảng, PYTHONPATH của bạn sẽ được chuyển thành khởi động phiên dịch.

4

PYTHONPATH kết thúc bằng số sys.path mà bạn có thể sửa đổi khi chạy.

import sys 
sys.path += ["whatever"] 
+0

Có lý do nào để thích câu trả lời này hơn câu trả lời từ @DavidZ không? – Dror

9

Xin lỗi vì mở lại câu hỏi, nhưng tôi nghĩ rằng nó có thể giúp ai đó:

Nếu bạn đặt sys.path.append('dir/to/path') mà không cần kiểm tra xem nó đã được thêm vào, bạn có thể tạo một danh sách dài trong sys.path. Vì lý do đó, tôi khuyên bạn nên sử dụng:

import sys 
import os # if you want this directory 

try: 
    sys.path.index('/dir/path') # Or os.getcwd() for this directory 
except ValueError: 
    sys.path.append('/dir/path') # Or os.getcwd() for this directory 

Tôi rất tiếc nếu tôi bực mình khi mở lại câu hỏi.

+0

Rất đẹp. Rất Pythonic. – PartialOrder

0

bạn có thể đặt PYTHONPATH, bằng os.environ['PATHPYTHON']=/some/path, sau đó bạn cần gọi os.system('python') để khởi động lại vỏ python để làm cho đường dẫn mới được thêm hiệu quả.

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