Відповіді:
Зазвичай можна уникнути необхідності робити що-небудь із PYTHONPATH, використовуючи .pth
файли . Просто помістіть файл із розширенням .pth (будь-яке базове ім’я працює) у папку сайту-пакети вашого virtualenv, наприклад lib\python2.7\site-packages
, з абсолютним шляхом до каталогу, що містить ваш пакет як єдиний вміст.
Якщо ви використовуєте virtualenv
, ви, ймовірно, також використовуєте virtualenvwrapper , і в цьому випадку ви можете використовувати команду add2virtualenv для додавання шляхів до шляху Python для поточного virtualenv:
add2virtualenv directory1 directory2 …
add2virtualenv
не змінює $ PYTHONPATH, скоріше вона модифікує sys.path.
add2virtualenv
, ви можете побачити, що він змінює sys.path. Я погоджуюся, що в документах звучить так, ніби він змінює PYTHONPATH
змінну середовища, але, здається, це неправильно. bitbucket.org/virtualenvwrapper/virtualenvwrapper/src/…
Ви також можете спробувати поставити символьне посилання на один із своїх віртуалів.
напр. 1) активуйте свій virtualenv 2) запустіть python 3) імпортуйте sys і перевірте sys.path 4) ви знайдете там шлях пошуку python. Виберіть один із них (наприклад, сайт-пакети) 5), перейдіть туди і створіть символьне посилання на ваш пакет, наприклад: ln -s шлях до вашого імені пакета-з-який-ви будете імпортувати
Таким чином, ви зможете імпортувати його, навіть не активуючи свій virtualenv. Просто спробуйте: path-to-your-virtualenv-folder / bin / python та імпортуйте свій пакет.
Якщо ви використовуєте virtualenvwrapper,
$ cd to the parent folder
$ add2virtualenv folder_to_add
відобразиться консоль
Warning: Converting "folder_to_add" to "/absoutle/path/to/folder_to_add"
Ось і все, і вам слід добре піти
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)
Я настійно рекомендую вам використовувати virtualenv та virtualenvwrapper, щоб уникнути захаращення шляху.