Tôi biết cách đặt nó trong/etc/profile và trong các biến môi trường của tôi.Trong tập lệnh Python, làm cách nào để đặt PYTHONPATH?
Nhưng điều gì sẽ xảy ra nếu tôi muốn đặt trong khi tập lệnh? Có phải nhập os, sys không? Tôi phải làm nó như thế nào?
Tôi biết cách đặt nó trong/etc/profile và trong các biến môi trường của tôi.Trong tập lệnh Python, làm cách nào để đặt PYTHONPATH?
Nhưng điều gì sẽ xảy ra nếu tôi muốn đặt trong khi tập lệnh? Có phải nhập os, sys không? Tôi phải làm nó như thế nào?
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
.)
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.
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.
Rất đẹp. Rất Pythonic. – PartialOrder
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ả.
Đã 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