PYTHONPATH ortam değişkenine, yalnızca belirli bir virtualenv ortamından görülebilecek bir yol eklemeye çalışıyorum.
SET PYTHONPATH=...Bir virtualenv komut istemi altında denedim , ancak bu tüm ortam için değişkeni ayarlıyor.
Bunu nasıl başarırım?
Yanıtlar:
Dosyaları kullanarak.pth PYTHONPATH ile herhangi bir şey yapmak zorunda kalmazsınız . Virtualenv'inizin site paketleri klasörüne .pth uzantılı bir dosya (örneğin lib\python2.7\site-packages, paketinizin tek içeriği olarak bulunduğu dizinin mutlak yolu ile) koyun.
Eğer kullanıyorsanız virtualenv, muhtemelen virtualenvwrapper kullanıyor olmalısınız , bu durumda add2virtualenv komutunu mevcut virtualenv için Python yoluna yollar eklemek için kullanabilirsiniz :
add2virtualenv directory1 directory2 …
add2virtualenv$ PYTHONPATH'ı değiştirmiyor, bunun yerine sys.path'i değiştiriyor.
add2virtualenvsys.path'i değiştirdiğini görebilirsiniz. Dokümanların, PYTHONPATHortam değişkenini değiştiriyormuş gibi ses çıkardığını kabul ediyorum , ancak bu yanlış görünüyor. bitbucket.org/virtualenvwrapper/virtualenvwrapper/src/...
Ayrıca sanal ortamlarınızdan birine sembolik bağ koymayı da deneyebilirsiniz.
Örneğin. 1) virtualenv'inizi etkinleştirin 2) python çalıştırın 3) sys içe aktarın ve sys.path'i kontrol edin 4) orada python arama yolunu bulacaksınız. Bunlardan birini seçin (ör. Site paketleri) 5) oraya gidin ve paketinize sembolik bağlantı oluşturun, örneğin: ln -s paketinizin adı-ile-hangi-içeri-aktaracaksınız
Bu şekilde, virtualenv'inizi etkinleştirmeden bile içeri aktarabilmelisiniz. Basitçe deneyin: sanalenv klasörünüzün-yolu / bin / python ve paketinizi içe aktarın.
Virtualenvwrapper kullanıyorsanız,
$ cd to the parent folder
$ add2virtualenv folder_to_add
konsol görüntülenecek
Warning: Converting "folder_to_add" to "/absoutle/path/to/folder_to_add"
İşte bu ve gitmek için iyi olmalısın
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)
Yolun dağınıklığını önlemek için virtualenv ve virtualenvwrapper kullanmanızı şiddetle tavsiye ederim.