Як ви налаштовуєте свій пітон в уже створений virtualenv?


106

Який файл я можу редагувати та як? Я створив віртуальне середовище.


перевірте, чи вказує він на правильні каталоги. Якщо у вас її ще немає, натисніть кнопку Створити та створіть її.

11
Використовуйте команду add2virtualenv .
s29

5
add2virtualenv - це virtualenvwrapperкоманда. Це не частина virtualenv.
kojiro

Відповіді:


124

ЗРІД №2

Правильна відповідь - це @ arogachev .


Якщо ви хочете змінити PYTHONPATHвикористане у virtualenv, ви можете додати наступний рядок у bin/activateфайл вашого virtualenv :

export PYTHONPATH="/the/path/you/want"

Таким чином, нове PYTHONPATHбуде встановлюватися щоразу, коли ви користуєтеся цим virtualenv.

EDIT: (відповісти на коментар @ RamRachum)

Щоб відновити його початкове значення deactivate, ви можете додати

export OLD_PYTHONPATH="$PYTHONPATH"

перед раніше згаданим рядком та додайте наступний рядок до свого bin/postdeactivateсценарію.

export PYTHONPATH="$OLD_PYTHONPATH"

1
Чи його також буде знято deactivate?
Рам Рахум

1
Отже, це означає, що новостворений віртуальний середовище має за замовчуванням PYTHONPATH(глобальний) замість локального шляху virtualenv?
ducin

6
Це дуже добре працювало для мене, я не використовую virtualenvwrapper. Зауважте лише, що у мене не було такого сценарію bin / postdeactivate, rathere activate мав функцію дезактивації. Рядок коду, таким чином, слід помістити туди, обережно, щоб загорнути його у оператор if, як решта операцій у функції.
Ніколько

2
Як не дивно, що virtualenv цього не робить за замовчуванням.
Сет

2
Правка №2 - брехня! :) Правильна відповідь - одна @ arjen-p-de-vries's
Берріел,

73

Коментар @ s29 має бути відповіддю:

Один із способів додати каталог у віртуальне середовище - встановити virtualenvwrapper (що корисно для багатьох речей), а потім зробити

mkvirtualenv myenv
workon myenv
add2virtualenv . #for current directory
add2virtualenv ~/my/path

Якщо ви хочете видалити ці шляхи, відредагуйте файл myenvhomedir/lib/python2.7/site-packages/_virtualenv_path_extensions.pth

Документацію щодо virtualenvwrapper можна знайти за посиланням http://virtualenvwrapper.readthedocs.org/en/latest/

Конкретну документацію щодо цієї функції можна знайти на веб-сайті http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html?highlight=add2virtualenv


6
зняти:add2virtualenv -d
thecheech

1
якраз пов’язав цю відповідь у моєму, як це набагато краще
mdeous

27

Ви можете створити .pthфайл, який містить каталог для пошуку, і розмістити його в site-packagesкаталозі. Наприклад:

cd $(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
echo /some/library/path > some-library.pth

Ефект такий самий, як додавання /some/library/pathдо налаштування sys.pathта залишається локальним virtualenv.


7
Мені дуже подобається такий підхід; не настільки вигадливий, як додавання ліній для активації / деактивації і не вимагає використання virtualenvwrapper. Якщо ви бажаєте не посилатися на python для пошуку режиму сайту-пакунків, це вже досить передбачуваний шлях $VIRTUALENV_ROOT/lib/pythonX.Y/site-packages. Документи про .pth файли: docs.python.org/3.6/library/site.html
Алек

2
Я не хотів вводити абсолютний шлях, тому що мої робочі простори рухаються навколо моєї файлової системи. І мій шлях до проекту має пробіли. Отже, я набрав трохи модифіковану команду: pushd "$(venv/bin/python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")" ...path/to/project/venv/lib/python3.7/site-packages ...path/to/project echo ../../../../src > my_project.pth popdПотім я відключив свій virtualenv і повторно активував. Тепер я міг запустити код проекту, який вимагав знати, де знаходиться мій каталог проектів.
Jim DeLaHunt

4
Це правильна відповідь. Зміна скрипта ( /bin/activate), наданого постачальником ( ), є неправомірною практикою, а встановлення сторонніх інструментів поступається використанню вбудованого способу досягнення цього.
Червоний

2
  1. Ініціалізуйте свій віртуаленв
cd venv

source bin/activate
  1. Просто встановіть або змініть ваш пітон шлях, ввівши команду наступним чином:
export PYTHONPATH='/home/django/srmvenv/lib/python3.4'
  1. для перевірки шляху введення python у python:
   python

      \>\> import sys

      \>\> sys.path

1

Я змінив свій скрипт активації, щоб джерело файлу .virtualenvrc, якщо він існує в поточному каталозі, і зберегти / відновити PYTHONPATHпри активації / деактивації.

Тут ви можете знайти виправлений activateсценарій. . Це заміна заміни сценарію активації, створеного virtualenv 1.11.6.

Потім я додав щось подібне до свого .virtualenvrc:

export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}/some/library/path"

-20

Тут уже відповіли -> Чи моє віртуальне середовище (пітон) порушує мій PYTHONPATH?

UNIX / LINUX

Додайте "експортувати PYTHONPATH = / usr / local / lib / python2.0" це у файл ~ / .bashrc та введіть його, ввівши "source ~ / .bashrc" OR ". ~ / .Bashrc".

WINDOWS XP

1) Перейдіть на панель керування 2) Двічі клацніть Система 3) Перейдіть на вкладку «Додатково» 4) Клацніть на «Змінні середовища»

У вікні системних змінних перевірте, чи є у вас змінна на ім'я PYTHONPATH. Якщо у вас вже є, перевірте, чи вказує він на правильні каталоги. Якщо у вас її ще немає, натисніть кнопку Створити та створіть її.

КОД ПІТОНА

Крім того, ви також можете зробити нижче свого коду: -

import sys
sys.path.append("/home/me/mypy") 

4
-1: Це стосується PYTHONPATH користувача, а не PYTHONPATH від virtualenv.
twneale
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.