Виртуальная среда от PyCharm против командной строки - PullRequest
0 голосов
/ 28 октября 2019

Я довольно новичок в создании приложений Python. Я дурачился с некоторыми небольшими учебниками и приложениями, использующими PyCharm, и всегда создавал новый проект с использованием среды Virtualenv, заканчивая папкой «venv» в папке моего проекта. У меня не было никаких проблем с этим, но с другой стороны, я не делал никаких крупных проектов.

Однако я хотел узнать, что Flask хочет попытаться создать новый проект Flask надлежащим образом. Во многих руководствах я вижу, что вместо этого люди создают (и активируют) виртуальную среду из командной строки (Windows / Linux), даже если они используют PyCharm, и мне просто интересно, в чем разница?

Когда я работаю над проектом в PyCharm, созданным с помощью Virtualenv, я не активирую venv перед работой над ним. Это неправильно или это то, что обрабатывается PyCharm? Что если venv создается из командной строки? Это все еще обрабатывается (активируется) PyCharm при работе над проектом там. А как насчет структуры папок? Это зависит от того, как создается виртуальная среда? Где-нибудь я могу найти некоторые "лучшие практики" для структуры установки / папки при создании проекта Flask в виртуальной среде?

Ответы [ 3 ]

2 голосов
/ 28 октября 2019

PyCharm активирует VirtualEnv для вас, если он настроен на его использование и сообщает, где он находится (точнее, где находится соответствующий двоичный файл Python в VirtualEnv).

Нет реальной разницы между созданными вручную VirtualEnvsи созданные PyCharm. (Помимо фреймворка, который вы выбрали для создания, в случае, если он отличается от того, с чем настроен PyCharm.)

Если вы хотите, вы можете просто создать его вручную, а затем указать на него PyCharm. Либо во время создания проекта, либо позже, используя диалог настроек (см. Настройки -> Проект -> Интерпретатор проекта). Затем он будет обрабатывать его по-другому, а также активировать его для вас при работе внутри IDE.

1 голос
/ 28 октября 2019

Мне просто интересно, в чем разница?

Существует множество инструментов для создания и использования виртуальных сред, и нет никакой разницы между ними, единственная разница между ними заключается в синтаксисе их команд (или как он взаимодействует с пользователями, например, для Pycharm вы устанавливаете некоторые настройки через GUI).

Это неправильно или это то, что обрабатывается PyCharm?

В этом нет ничего плохого. Пока у вас есть каталог venv (или .venv) в корне вашего проекта, и он является исполняемым для любого пользователя, Pycharm будет использовать его и активировать эту виртуальную среду для вас (не сообщая вам). Если Pycharm не в состоянии это сделать (из-за проблем с поиском venv или активацией / выполнением его!), Он покажет вам сообщения об исправлении своих проблем и не сможет запустить ваш проект, пока вы их не исправите.

Лучше создать свою виртуальную среду в каталоге .venv прямо в корневом каталоге вашего проекта. (Это условно)

См. Виртуальные среды Python и , а также настройка pycharm virtualenv .

1 голос
/ 28 октября 2019

Виртуальная среда - это всего лишь папка, в которой хранятся установленные пакеты Python и изолируется от остальной части вашей системы. Это позволяет вам работать над различными проектами, которые могут иметь конкурирующие требования к внешним пакетам, не вступая в конфликты. «Активация» виртуальной среды просто устанавливает определенные переменные среды в вашей текущей оболочке, поэтому она будет использовать пакеты из этой среды. «Активация» среды никогда не оказывает никакого влияния, кроме вашей текущей оболочки. Поэтому активация среды в командной строке ничего не изменит с PyCharm.

PyCharm интегрирует интерпретатор Python, чтобы предоставить вам множество дополнительных функций. Вы сообщаете PyCharm, какой интерпретатор вы хотите использовать для своего проекта, и он выяснит, какие пакеты у него есть, какая у него версия, и автоматически настроит все правильно для запуска вашего кода из PyCharm и т. Д. Вы можете указать PyCharm использовать вашсистемный интерпретатор Python или существующая виртуальная среда или даже использование его для создания новой среды. Вам не нужно делать ничего особенного, кроме выбора правильного интерпретатора / среды в настройках проекта.

Нет причин активировать среду из командной строки, если вы не собираетесь использовать ее изкомандная строка. Конечно, использование Flask и запуск его сервера из командной строки и поддержка его работы в фоновом режиме могут быть полезны. Не уверен, что PyCharm предоставит вам простой или интегрированный вариант для запуска постоянных процессов в фоновом режиме. Вы все еще можете выбрать ту же виртуальную среду в PyCharm и использовать ее для запуска своих тестов непосредственно из PyCharm, использовать ее отладчик и т. Д.

Я предпочитаю хранить venv в папке проекта и хранить всевены в ~/.virtualenvs/ или такие. Он удаляет папку проекта и предотвращает случайную проверку этих файлов в системе контроля версий.

...