Как мне добавить путь к 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 любыми способами менее элегантно, чем добавление нужного пакета через ту или иную ссылку. Однако я думаю, что лучший способ добавить такие ссылки — это(конечно, после активации virtualenv). Это также создаетфайл в соответствующем каталоге site-packages, поэтому нет необходимости придумывать сложные способы поиска нужного файла.реж. И вам не нужны никакие инструменты, специфичные для virtualenv.

Как отмечали выше, это не совсем то же самое, что изменение PYTHONPATH, поскольку оно добавляется к sys.path вместо добавления в начало, но во многих сценариях это не имеет значения.

Как было предложено выше @crimeminister, вы можете использовать virtualenvwrapperзатем, как это было предложено @Aneesh Panoli. Если add2virtualenv не работает после pip install virtualenvwrapper, а затем следуйте инструкциям в верхнем проголосованном ответе @chirinosky здесь . Работает для меня.

Были проблемы с установкой Box2d в виртуальной среде с использованием Python 3.9.

Просто запустилpip install swigа затем смог успешно запуститьpip install box2d

Другие вопросы по тегам