Câu trả lời:
Bạn thường có thể tránh được việc phải làm bất cứ điều gì với PYTHONPATH bởi sử dụng .pth
các file . Chỉ cần đặt một tệp có phần mở rộng .pth (bất kỳ tên cơ sở nào hoạt động) trong thư mục gói trang web của virtualenv, ví dụ: lib\python2.7\site-packages
với đường dẫn tuyệt đối đến thư mục chứa gói của bạn làm nội dung duy nhất của nó.
Nếu bạn đang sử dụng virtualenv
, có lẽ bạn cũng nên sử dụng virtualenvwrapper , trong trường hợp đó, bạn có thể sử dụng lệnh add2virtualenv để thêm đường dẫn vào đường dẫn Python cho virtualenv hiện tại:
add2virtualenv directory1 directory2 …
add2virtualenv
không sửa đổi $ PYTHONPATH, thay vào đó nó sửa đổi sys.path.
add2virtualenv
, bạn có thể thấy nó đang sửa đổi sys.path. Tôi đồng ý rằng tài liệu làm cho nó giống như nó sửa đổi PYTHONPATH
biến môi trường, nhưng điều đó dường như không chính xác. bitbucket.org/virtualenvwrapper/virtualenvwrapper/src/…
Bạn cũng có thể thử đặt liên kết biểu tượng vào một trong các virtualenv của mình.
ví dụ. 1) kích hoạt virtualenv của bạn 2) chạy python 3) nhập sys và kiểm tra sys.path 4) bạn sẽ tìm thấy đường dẫn tìm kiếm python ở đó. Chọn một trong những cái đó (ví dụ: site-package) 5) vào đó và tạo liên kết tượng trưng cho gói của bạn như: ln -s path-to-your-package name-with-which-will-be-import
Bằng cách đó, bạn có thể nhập nó ngay cả khi không kích hoạt virtualenv của mình. Chỉ cần thử: path-to-your-virtualenv-folder / bin / python và nhập gói của bạn.
Nếu bạn đang sử dụng virtualenvwrapper,
$ cd to the parent folder
$ add2virtualenv folder_to_add
bảng điều khiển sẽ hiển thị
Warning: Converting "folder_to_add" to "/absoutle/path/to/folder_to_add"
Vậy là xong, và bạn nên đi
import sys
import os
print(str(sys.path))
dir_path = os.path.dirname(os.path.realpath(__file__))
print("current working dir: %s" % dir_path)
sys.path.insert(0, dir_path)
Tôi thực sự khuyên bạn nên sử dụng virtualenv và virtualenvwrapper để tránh làm lộn xộn đường dẫn.