Как мне добавить путь к PYTHONPATH в virtualenv
Я пытаюсь добавить путь к переменной среды PYTHONPATH, который будет виден только из конкретной среды virtualenv.
Я старался SET PYTHONPATH=...
в командной строке virtualenv, но это задает переменную для всей среды.
Как мне этого добиться?
8 ответов
Обычно вы можете избежать необходимости что-либо делать с PYTHONPATH, используя .pth
файлы Просто поместите файл с расширением.pth (любое базовое имя работает) в папку site-packages вашего virtualenv, например: lib\python2.7\site-packages
, с абсолютным путем к каталогу, содержащему ваш пакет в качестве единственного содержимого.
Если вы используете virtualenv
Вы, вероятно, также должны использовать http://virtualenvwrapper.readthedocs.org/, и в этом случае вы можете использовать команду add2virtualenv, чтобы добавить пути к пути Python для текущего virtualenv:
add2virtualenv directory1 directory2 …
Если вы используете virtualenvwrapper,
$ cd to the parent folder
$ add2virtualenv folder_to_add
консоль отобразит
Warning: Converting "folder_to_add" to "/absoutle/path/to/folder_to_add"
Вот и все, и вы должны быть хорошо идти
Вы также можете попытаться поставить символическую ссылку на один из ваших virtualenv.
например. 1) активируйте вашу virtualenv 2) запустите python 3) импортируйте sys и проверьте sys.path 4) вы найдете там путь поиска python. Выберите один из них (например, site-packages). 5) Перейдите туда и создайте символическую ссылку на ваш пакет, например: ln -s path-to-your-package name-with-which-you-be-importing
Таким образом, вы сможете импортировать его, даже не активируя свой virtualenv. Просто попробуйте: path-to-your-virtualenv-folder/bin/python и импортируйте ваш пакет.
В 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)
Я настоятельно рекомендую вам использовать virtualenv и virtualenvwrapper, чтобы избежать путаницы
Я согласен с большинством ответов здесь, что изменение PYTHONPATH любыми способами менее элегантно, чем добавление нужного пакета через ту или иную ссылку. Однако я думаю, что лучший способ добавить такие ссылки — это
Как отмечали выше, это не совсем то же самое, что изменение PYTHONPATH, поскольку оно добавляется к sys.path вместо добавления в начало, но во многих сценариях это не имеет значения.
Как было предложено выше @crimeminister, вы можете использовать
virtualenvwrapper
затем, как это было предложено @Aneesh Panoli. Если
add2virtualenv
не работает после
pip install virtualenvwrapper
, а затем следуйте инструкциям в верхнем проголосованном ответе @chirinosky здесь . Работает для меня.
Были проблемы с установкой Box2d в виртуальной среде с использованием Python 3.9.
Просто запустилpip install swig
а затем смог успешно запуститьpip install box2d