2012-05-24 25 views
70

Tôi đang cố gắng thêm đường dẫn đến biến môi trường PYTHONPATH, điều này sẽ chỉ hiển thị từ môi trường ảo hóa cụ thể.Làm cách nào để thêm đường dẫn tới PYTHONPATH trong virtualenv

Tôi đã thử SET PYTHONPATH=... dưới dấu nhắc lệnh virtualenv, nhưng điều đó đặt biến cho toàn bộ môi trường.

Làm cách nào để đạt được điều đó?

Trả lời

123

Bạn thường có thể tránh phải làm bất cứ điều gì với PYTHONPATH bởi using .pth files. 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) vào thư mục gói trang web của virtualenv của bạn, 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.

80

Nếu bạn đang sử dụng virtualenv, bạn nên có lẽ cũng được sử dụng virtualenvwrapper, trong trường hợp mà bạn có thể sử dụng lệnh add2virtualenv để thêm đường dẫn đến đường dẫn Python cho virtualenv hiện tại:

add2virtualenv directory1 directory2 …

+0

nơi nào tiện ích đến từ đâu? Tôi đã thử cài đặt pip virtualenvwrapper và không nhận được nó cho tôi. – AlanObject

+0

https://bitbucket.org/dhellmann/virtualenvwrapper – crimeminister

+2

Cách xóa khỏi virtualenv? – silverdagger

4

Bạn cũng có thể thử đặt liên kết tượng trưng vào một trong các virtualenv của bạn.

ví dụ: 1) kích hoạt virtualenv 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 số đó (ví dụ: gói trang web) 5) chuyển đến đó và tạo liên kết tượng trưng cho gói của bạn như: ln -s tên gói-đường-tới-bạn-với-bạn-sẽ-nhập

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ử: đường dẫn đến thư mục ảo/bin/python và nhập gói của bạn.

+0

Tôi đoán điều này đã được downvoted cho việc sử dụng các liên kết tượng trưng chứ không phải là các tập tin .pth. Nó làm việc cho tôi mặc dù, vì vậy, whavever. –

0

Trong Python 3.6.4

import sys 
import os 

print(str(sys.path)) 

dir_path = os.path.dirname(os.path.realpath(__file__)) 
print(f"current working dir: {dir_path}") 

sys.path.insert(0, dir_path) 

tôi đề nghị bạn nên sử dụng virtualenv và virtualenvwrapper để tránh làm lộn xộn đường

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