Де слід створити віртуальні?


106

Я розгублений, де я повинен розмістити свої віртуоли.

З моїм першим проектом django я створив проект за допомогою команди

django-admin.py startproject djangoproject

Потім я ввійшов до каталогу djangoproject і запустив команду

virtualenv env

який створив каталог віртуального середовища на тому ж рівні, що і внутрішній djangoprojectкаталог.

Це неправильне місце, де можна створити virtualenv для цього конкретного проекту?

У мене складається враження, що більшість людей зберігають всі свої virtualenvs разом у зовсім іншому каталозі, наприклад ~/virtualenvs, а потім використовують virtualenvwrapper для перемикання між ними назад і назад.

Чи є правильний спосіб це зробити?

Відповіді:


128

Багато людей використовують інструмент virtualenvwrapper , який зберігає всі virtualenvs в тому самому місці ( ~/.virtualenvsкаталозі) і дозволяє ярлики для створення та збереження їх там. Наприклад, ви можете:

mkvirtualenv djangoproject

а потім пізніше:

workon djangoproject

Мабуть, погана ідея зберігати каталог virtualenv в самому проекті, оскільки ви не хочете його поширювати (це може бути специфічно для вашого комп'ютера чи операційної системи). Замість цього збережіть файл вимоги.txt, використовуючи pip :

pip freeze > requirements.txt

і розподілити це. Це дозволить іншим, хто використовує ваш проект, перевстановити всі ті самі вимоги у свої virtualenv за допомогою:

pip install -r requirements.txt

приємно, що я ніколи не заглядав у штучки, але якщо мені потрібно якийсь день, це стане в нагоді
Joran Beasley,

pip дуже популярний у спільноті Django та дуже простий у використанні.
Девід Робінсон

Дякую, Девіде, саме так я і думав. Я знав про вимоги і роблю це. Я просто не був впевнений, куди повинен піти Венвер. Ваш коментар щодо того, що він стосується ОС, є хорошим виправданням для того, щоб робити те, що ви пропонуєте.
Рей

Чи можливо перемістити віртуальне середовище після його створення? Я нерозумно помістив це всередині свого каталогу проектів
Джеймс Вірзба

6
Не велике виправдання ІМО. Це не те, для чого .gitignore?
Джош Ное

24

Зміна місця розташування каталогу virtualenv порушує його

Це одна з переваг виведення каталогу за межами дерева сховища, наприклад, під ~/.virtualenvs з virutalenvwrapper.

В іншому випадку, якщо ви будете зберігати його в дереві проектів, переміщення місця розташування проекту порушить virtualenv.

Див.: Перейменування папки virtualenv, не порушуючи її

є --relocatable але, як відомо, не ідеально.

Ще одна незначна перевага: не потрібно .gitignore .

Перевагами його розміщення в дереві проекту є:

  • тримає пов'язані речі близько.
  • ви, ймовірно, ніколи не використовуєте даний віртуаленв у проектах, тому розміщення його в іншому місці не дає великої переваги

3
Це єдиний розумний аргумент, який я бачив для створення папок virtualenv поза деревами проектів! Інші вказівки, здається, повторюють «централізаційну» догму, як ніби вона сама по собі є найкращою практикою замість нещасного компромісу через те, що virtualenvs принципово порушено (хоч і досить корисно!).
rob3c

Вибачте, мені щось не зрозуміло, тому ви рекомендуєте створити його в дереві проектів, а потім "gitignoring" або створити його в ~ / .virtualenvs? На що посилається "Якби це не було"?
aderchox

1
@aderchox є компроміс: помістіть його в дерево проекту, і воно перемістить дерево, вам доведеться перевстановити або поставити його на ~, але керувати додатковим піддіректором поза проектом.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

5

Загальноприйняте місце для їх розміщення - це те саме місце, де встановлено за замовчуванням встановлення virtualenvwrapper: ~/.virtualenvs

Пов'язане: virtualenvwrapper - чудовий інструмент, який надає скорочення для загальних команд virtualenv. http://www.doughellmann.com/projects/virtualenvwrapper/


0

Якщо ви використовуєте pyenv install Python, то pyenv-virtualenv стане найкращою практикою. Якщо встановити .python-versionфайл, він може автоматично активувати або деактивувати віртуальне оточення при зміні робочої папки. Pyenv-virtualenvтакож помістити всі віртуальні env у $HOME/.pyenv/versionsпапку.


0

Зі свого особистого досвіду я рекомендую організувати всі віртуальні середовища в одному єдиному каталозі. Якщо хтось не має надзвичайно гострої пам'яті і не може запам'ятати файли / папки, розкидані по файловій системі. Не великий прихильник використання інших інструментів просто для управління віртуальними середовищами. У VSCode, якщо я конфігурую ( python.venvPath) каталог, що містить усі віртуальні середовища, він може автоматично розпізнавати їх.

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