PyCharm makes it possible to use the virtualenv tool to create a project-specific isolated virtual environment. The main purpose of virtual environments is to manage settings and dependencies of a particular project regardless of other Python projects. virtualenv tool comes bundled with PyCharm, so the user doesn’t need to install it.
Create a virtualenv environment
-
Do one of the following:
-
Click the Python Interpreter selector and choose Add New Interpreter.
-
Press Ctrl+Alt+S to open Settings and go to . Click the Add Interpreter link next to the list of the available interpreters.
-
Click the Python Interpreter selector and choose Interpreter Settings. Click the Add Interpreter link next to the list of the available interpreters.
-
-
Select Add Local Interpreter.
-
In the left-hand pane of the Add Python Interpreter dialog, select Virtualenv Environment.
-
The following actions depend on whether you want to create a new virtual environment or to use an existing one.
- New virtual environment
-
-
Specify the location of the new virtual environment in the Location field, or click and browse for the desired location in your file system. The directory for the new virtual environment should be empty.
-
Choose the base interpreter from the list, or click and find the desired Python executable in your file system.
-
Select the Inherit global site-packages checkbox if you want all packages installed in the global Python on your machine to be added to the virtual environment you’re going to create. This checkbox corresponds to the
--system-site-packages
option of the virtualenv tool.
-
- Existing virtual environment
-
-
Choose the desired interpreter from the list.
-
If the desired interpreter is not on the list, click , and then browse for the desired Python executable (for example, venv/bin/python on macOS or venvScriptspython.exe on Windows).
The selected virtual environment will be reused for the current project.
-
-
Click OK to complete the task.
You can create as many virtual environments as required. To easily tell them from each other, use different names.
Use an existing interpreter
-
Press Ctrl+Alt+S to open the IDE settings and select .
-
Expand the list of the available interpreters and click the Show All link. Alternatively, click the icon and select Show All.
Virtual environments are marked with .
-
Select the target environment from the list and click OK to confirm your choice.
PyCharm can create a virtual environment for your project based on the project requirements.
Create a virtual environment using the project requirements
-
Open any directory with your source files that contains the requirements.txt or setup.py file: select from the main menu and choose the directory.
-
If no virtual environment has been created for this project, PyCharm suggests creating it:
-
Keep the suggested options, or specify the environment location or base Python interpreter. Click OK to complete the task.
Once you click OK, PyCharm creates an environment and installs all the required packages. On the completion, see the notification popup:
Note that if you ignore a suggestion to create a virtual environment, PyCharm won’t create a Python interperter for your project. So, any time when you open a .py file, you’ll see the warning with the options for configuring a project interpreter:
This approach is particularly helpful when you want to upgrade a version of Python your environment is based on, for example, from 3.5 to 3.9. You can specify a new base interpreter and use requirements.txt to ensure all the needed packages are installed.
For any of the configured Python interpreters (but Docker-based), you can:
- Manage interpreter paths
- Install, uninstall, and upgrade packages
Once you have create a new virtual environment, you can reuse it for your other projects. Learn more how to setup an existing environment as a Python interpreter.
Last modified: 20 January 2023
Язык программирования Python считается достаточно простым. На нем легче и быстрее пишутся программы, по сравнению с компилируемыми языками программирования. Для Python существует множество библиотек, позволяющих решать практически любые задачи. Есть, конечно, и минусы и другие нюансы, но это отдельная тема.
Довольно часто я вижу, как мои знакомые и друзья начинают изучать Python и сталкиваются с проблемой установки и использования сторонних библиотек. Они могут несколько часов потратить на установку библиотеки, и даже, могут не справиться с этим и забить на неё. В то время как, в большинстве случаев, это можно было сделать за несколько минут.
Статья начинается с базовых вещей: с установки Python 3, инструментов разработки Pip и Virtualenv и среды разработки PyCharm в Windows и в Ubuntu. Для многих это не представляет трудностей и возможно, что уже всё установлено.
После чего будет то, ради чего задумывалась статья, я покажу как в PyCharm создавать и использовать виртуальные окружения и устанавливать в них библиотеки с помощью Pip.
Установка Python и Pip
Pip является менеджером пакетов для Python. Именно с помощью него обычно устанавливаются модули/библиотеки для разработки в виде пакетов. В Windows Pip можно установить через стандартный установщик Python. В Ubuntu Pip ставится отдельно.
Установка Python и Pip в Windows
Для windows заходим на официальную страницу загрузки, где затем переходим на страницу загрузки определенной версии Python. У меня используется Python 3.6.8, из-за того, что LLVM 9 требует установленного Python 3.6.
Далее в таблице с файлами выбираем «Windows x86-64 executable installer» для 64-битной системы или «Windows x86 executable installer» для 32-битной. И запускаем скачанный установщик, например, для версии Python 3.8.1 он называется python-3.8.1-amd64.exe
.
Во время установки ставим галочку возле Add Python 3.x to PATH и нажимаем Install Now:
Установка Python и Pip в Ubuntu
В Ubuntu установить Python 3 можно через терминал. Запускаем его и вводим команду установки. Вторая команда выводит версию Python.
sudo apt install python3-minimal
python3 -V
Далее устанавливаем Pip и обновляем его. После обновления необходимо перезапустить текущую сессию (или перезагрузить компьютер), иначе возникнет ошибка во время вызова Pip.
sudo apt install python3-pip
pip3 install --user --upgrade pip
Основные команды Pip
Рассмотрим основные команды при работе с Pip в командой строке Windows и в терминале Ubuntu.
Если виртуальные окружения не используются, то во время установки пакета(ов) полезно использовать дополнительно ключ --user
, устанавливая пакет(ы) локально только для текущего пользователя.
Установка VirtualEnv и VirtualEnvWrapper
VirtualEnv используется для создания виртуальных окружений для Python программ. Это необходимо для избежания конфликтов, позволяя установить одну версию библиотеки для одной программы, и другу для второй. Всё удобство использования VirtualEnv постигается на практике.
Установка VirtualEnv и VirtualEnvWrapper в Windows
В командной строке выполняем команды:
pip install virtualenv
pip install virtualenvwrapper-win
Установка VirtualEnv и VirtualEnvWrapper в Ubuntu
Для Ubuntu команда установки будет следующей:
pip3 install --user virtualenv virtualenvwrapper
После которой в конец ~/.bashrc
добавляем:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source ~/.local/bin/virtualenvwrapper.sh
При новом запуске терминала должны будут появиться сообщения, начинающиеся на virtualenvwrapper.user_scripts creating
, что говорит об успешном завершении установки.
Работа с виртуальным окружением VirtualEnv
Рассмотрим основные команды при работе с VirtualEnv в командой строке Windows и в терминале Ubuntu.
Находясь в одном из окружений, можно ставить пакеты через Pip, как обычно и нет необходимости добавлять ключ --user
:
pip3 install markdown
Для Windows можно указать в переменных среды WORKON_HOME
для переопределения пути, где хранятся виртуальные окружения. По умолчанию, используется путь %USERPROFILE%Envs
.
Установка PyCharm
PyCharm — интегрированная среда разработки для языка программирования Python. Обладает всеми базовыми вещами необходимых для разработки. В нашем случае огромное значение имеет хорошее взаимодействие PyCharm с VirtualEnv и Pip, чем мы и будем пользоваться.
Установка PyCharm в Windows
Скачиваем установщик PyCharm Community для Windows с официального сайта JetBrains. Если умеете проверять контрольные суммы у скаченных файлов, то не забываем это сделать.
В самой установке ничего особенного нету. По сути только нажимаем на кнопки next, и в завершение на кнопку Install. Единственно, можно убрать версию из имени папки установки, т.к. PyCharm постоянно обновляется и указанная версия в будущем станет не правильной.
Установка PyCharm в Ubuntu
Скачиваем установщик PyCharm Community для Linux с официального сайта JetBrains. Очень хорошей практикой является проверка контрольных сумм, так что если умеете, не ленитесь с проверкой.
Распаковываем архив с PyCharm и переименовываем папку с программой в pycharm-community
, убрав версию из названия.
Теперь в директории ~/.local
(Ctrl + H — Показ скрытый файлов), создаем папку opt
, куда и перемещаем pycharm-community
. В результате по пути /.local/opt/pycharm-community
должны размещаться папки bin
, help
и т.д. Таким образом PyCharm будет находится в своём скромном месте и никому не будет мешать.
Далее выполняем команды в терминале:
cd /home/maksim/.local/opt/pycharm-community/bin
sh ./pycharm.sh
Производим установку. И очень важно в конце не забыть создать desktop файл для запуска PyCharm. Для этого в Окне приветствия в нижнем правом углу нажимаем на Configure → Create Desktop Entry.
Установка PyCharm в Ubuntu из snap-пакета
PyCharm теперь можно устанавливать из snap-пакета. Если вы используете Ubuntu 16.04 или более позднюю версию, можете установить PyCharm из командной строки.
sudo snap install pycharm-community --classic
Использование VirtualEnv и Pip в PyCharm
Поддержка Pip и Virtualenv в PyCharm появилась уже довольно давно. Иногда конечно возникают проблемы, но взаимодействие работает в основном стабильно.
Рассмотрим два варианта работы с виртуальными окружениями:
- Создаём проект со своим собственным виртуальным окружением, куда затем будут устанавливаться необходимые библиотеки;
- Предварительно создаём виртуальное окружение, куда установим нужные библиотеки. И затем при создании проекта в PyCharm можно будет его выбирать, т.е. использовать для нескольких проектов.
Первый пример: использование собственного виртуального окружения для проекта
Создадим программу, генерирующую изображение с тремя графиками нормального распределения Гаусса Для этого будут использоваться библиотеки matplotlib и numpy, которые будут установлены в специальное созданное виртуальное окружение для программы.
Запускаем PyCharm и окне приветствия выбираем Create New Project.
В мастере создания проекта, указываем в поле Location путь расположения создаваемого проекта. Имя конечной директории также является именем проекта. В примере директория называется ‘first_program’.
Далее разворачиваем параметры окружения, щелкая по Project Interpreter. И выбираем New environment using Virtualenv. Путь расположения окружения генерируется автоматически. В Windows можно поменять в пути папку venv
на Envs
, чтобы команда workon
находила создаваемые в PyCharm окружения. Ставить дополнительно галочки — нет необходимости. И нажимаем на Create.
Теперь установим библиотеки, которые будем использовать в программе. С помощью главного меню переходим в настройки File → Settings. Где переходим в Project: project_name → Project Interpreter.
Здесь мы видим таблицу со списком установленных пакетов. В начале установлено только два пакета: pip и setuptools.
Справа от таблицы имеется панель управления с четырьмя кнопками:
- Кнопка с плюсом добавляет пакет в окружение;
- Кнопка с минусом удаляет пакет из окружения;
- Кнопка с треугольником обновляет пакет;
- Кнопка с глазом включает отображение ранних релизов для пакетов.
Для добавления (установки) библиотеки в окружение нажимаем на плюс. В поле поиска вводим название библиотеки. В данном примере будем устанавливать matplotlib. Дополнительно, через Specify version можно указать версию устанавливаемого пакета и через Options указать параметры. Сейчас для matplotlib нет необходимости в дополнительных параметрах. Для установки нажимаем Install Package.
После установки закрываем окно добавления пакетов в проект и видим, что в окружение проекта добавился пакет matplotlib с его зависимостями. В том, числе был установлен пакет с библиотекой numpy. Выходим из настроек.
Теперь мы можем создать файл с кодом в проекте, например, first.py. Код программы имеет следующий вид:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-5, 5, 100)
def gauss(sigma, mu):
return 1/(sigma * (2*np.pi)**.5) * np.e ** (-(x-mu)**2/(2 * sigma**2))
dpi = 80
fig = plt.figure(dpi=dpi, figsize=(512 / dpi, 384 / dpi))
plt.plot(x, gauss(0.5, 1.0), 'ro-')
plt.plot(x, gauss(1.0, 0.5), 'go-')
plt.plot(x, gauss(1.5, 0.0), 'bo-')
plt.legend(['sigma = 0.5, mu = 1.0',
'sigma = 1.0, mu = 0.5',
'sigma = 1.5, mu = 0.0'], loc='upper left')
fig.savefig('gauss.png')
Для запуска программы, необходимо создать профиль с конфигурацией. Для этого в верхнем правом углу нажимаем на кнопку Add Configuration…. Откроется окно Run/Debug Configurations, где нажимаем на кнопку с плюсом (Add New Configuration) в правом верхнем углу и выбираем Python.
Далее указываем в поле Name имя конфигурации и в поле Script path расположение Python файла с кодом программы. Остальные параметры не трогаем. В завершение нажимаем на Apply, затем на OK.
Теперь можно выполнить программу и в директории с программой появится файл gauss.png
:
Второй пример: использование предварительно созданного виртуального окружения
Данный пример можно использовать во время изучения работы с библиотекой. Например, изучаем PySide2 и нам придется создать множество проектов. Создание для каждого проекта отдельного окружения довольно накладно. Это нужно каждый раз скачивать пакеты, также свободное место на локальных дисках ограничено.
Более практично заранее подготовить окружение с установленными нужными библиотеками. И во время создания проектов использовать это окружение.
В этом примере мы создадим виртуальное окружения PySide2, куда установим данную библиотеку. Затем создадим программу, использующую библиотеку PySide2 из предварительно созданного виртуального окружения. Программа будет показывать метку, отображающую версию установленной библиотеки PySide2.
Начнем с экран приветствия PyCharm. Для этого нужно выйти из текущего проекта. На экране приветствия в нижнем правом углу через Configure → Settings переходим в настройки. Затем переходим в раздел Project Interpreter. В верхнем правом углу есть кнопка с шестерёнкой, нажимаем на неё и выбираем Add…, создавая новое окружение. И указываем расположение для нового окружения. Имя конечной директории будет также именем самого окружения, в данном примере — pyside2
. В Windows можно поменять в пути папку venv
на Envs
, чтобы команда workon
находила создаваемые в PyCharm окружения. Нажимаем на ОК.
Далее в созданном окружении устанавливаем пакет с библиотекой PySide2, также как мы устанавливали matplotlib. И выходим из настроек.
Теперь мы можем создавать новый проект использующий библиотеку PySide2. В окне приветствия выбираем Create New Project.
В мастере создания проекта, указываем имя расположения проекта в поле Location. Разворачиваем параметры окружения, щелкая по Project Interpreter, где выбираем Existing interpreter и указываем нужное нам окружение pyside2
.
Для проверки работы библиотеки создаем файл second.py
со следующий кодом:
import sys
from PySide2.QtWidgets import QApplication, QLabel
from PySide2 import QtCore
if __name__ == "__main__":
app = QApplication(sys.argv)
label = QLabel(QtCore.qVersion())
label.show()
QtCore.qVersion()
sys.exit(app.exec_())
Далее создаем конфигурацию запуска программы, также как создавали для первого примера. После чего можно выполнить программу.
Заключение
У меня нет богатого опыта программирования на Python. И я не знаком с другими IDE для Python. Поэтому, возможно, данные IDE также умеют работать с Pip и Virtualenv. Использовать Pip и Virtualenv можно в командой строке или в терминале. Установка библиотеки через Pip может завершиться ошибкой. Есть способы установки библиотек без Pip. Также создавать виртуальные окружения можно не только с помощью Virtualenv.
В общем, я лишь поделился небольшой частью опыта из данной области. Но, если не вдаваться в глубокие дебри, то этого вполне достаточно знать, чтобы писать простые программы на Python с использованием сторонних библиотек.
Solution for WSL (Ubuntu on Windows)
If you’re using WSL (Ubuntu on Windows), you can also open bash as terminal in pycharm and activate a linux virtualenv.
Use a .pycharmrc
file like described in Peter Gibson’s answer; Add the .pycharmrc
file to your home directory with following content:
source ~/.bashrc
source ~/path_to_virtualenv/bin/activate
In Pycharm File > Settings > Tools > Terminal add the following ‘Shell path’:
"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"
Project specific virtualenv
The path to your virtualenv in .pycharmrc
does not have to be absolute. You can set a project specific virtualenv by setting a relative path from your project directory.
My virtualenv is always located in a ‘venv’ folder under my project directory, so my .pycharmrc
file looks like this:
source ~/.bashrcsource ~/pycharmvenv/bin/activate#absolute path source ./venv/bin/activate #relative path
BONUS: automatically open ssh tunnel to connect virtualenv as project interpreter
Add the following to your .pycharmrc
file:
if [ $(ps -aux | grep -c 'ssh') -lt 2 ]; then
sudo service ssh start
fi
This checks if a ssh tunnel is already opened, and opens one otherwise.
In File -> Settings -> Project -> Project Interpreter in Pycharm, add a new remote interpreter with following configuration:
+--------------------------+---------------------------------+-------+----+ | Name: | <Interpreter name> | | | | Select | 'SSH Credentials' | | | | Host: | 127.0.0.1 | Port: | 22 | | User: | <Linux username> | | | | Auth type: | 'Password' | | | | Password: | <Linux password> | | | | Python interpreter path: | <Linux path to your virtualenv> | | | | Python helpers path: | <Set automatically> | | | +--------------------------+---------------------------------+-------+----+
Now when you open your project, your bash automatically starts in your virtualenv, opens a ssh tunnel, and pycharm connects the virtualenv as remote interpreter.
warning: the last update in Windows automatically starts a SshBroker and SshProxy service on startup. These block the ssh tunnel from linux to windows. You can stop these services in Task Manager -> Services, after which everything will work again.
Виртуальные среды (окружения) используются в Python 3 контроля версионности пакетов. Кроме контроля версий среды используют для использования разных интерпретаторов. Самих пакетов, которые создают виртуальные окружения много. В этой статье речь пойдет про venv, virtualenv и virtualenvwrapper.
Для чего нужно виртуальные среды?
При создании скрипта или программы вы часто используете сторонние модули (пакеты). Если в последующем потребуется перенос программы на другой компьютер, то вы можете столкнуться с двумя проблемами:
- Нужные пакеты отсутствуют на новом компьютере и придется проверять каждый файл программы для их поиска. Либо получить список установленных пакетов через «pip list» на старом компьютере, который выведет множество лишних модулей.
- Даже если количество пакетов или файлов программ маленькое, или вы его создали отдельно, то вы все равно можете столкнуться с проблемами в версиях. Пакеты могли быть обновлены, а методы и классы изменены.
Использование виртуальных сред избавляет вас от этих проблем. В таком виртуальной среде находится свой интерпретатор, свой pip и все пакеты относятся только к нему. Так же, весь проект, можно перенести как папку на другой компьютер без ошибок.
Кроме этого вы можете запускать разные версии Python в разных виртуальных средах, что сильно упрощает работу.
Установка и создания окружения с virtualenv
Самый популярный пакет, который используется для создания виртуальных сред в Python, это virtualenv. Для его установки на Windows выполните:
pip install virtualenv
Для установки на Linux системах, для Python 3, понадобится выполнить такую команду:
sudo pip3 install virtualenv
Если вы не будете использовать sudo, то в зависимости от версии ОС у вас появятся разные ошибки. В CentOS установка не выполнится вовсе, а в Ubuntu не будет добавлен путь в переменную окружения:
- PermissionError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6’
- Command ‘virtualenv’ not found, but can be installed with: sudo apt install virtualenv
Далее, вне зависимости от того используете ли вы Linux или Windows, вы можете выполнить команду получения справки:
virtualenv --help
Я использую Python 3.6, и так я создам окружение в папке projectname/venv:
virtualenv -p python3.6 project/venv
Способ выше устанавливает окружение относительно текущего пути. Если нужно установить на другом диске или каталоге, то можно использовать абсолютный путь. Так же не обязательно указывать параметр «-p» если вы используете одну версию Python. Вариант как это может быть сделано на Windows:
virtualenv D:projectvenv
Само расположение виртуального окружения рекомендуется создавать в одной папке вместе разрабатываемым приложением. Такую структуру будет легче сопровождать. Я обычно придерживаюсь такой структуры:
-projectname # Каталог проекта
--venv # Окружение
--app # Каталог с приложением
Активация и выход из окружения
Для того что бы виртуальное окружения начало работать его нужно активировать. В разных ОС это делается по-разному.
В случаях с Linux указываем полный путь до venv/bin/activate:
source project/venv/bin/activate
Для активации в Windows, в папке venvScripts есть несколько файлов:
- activate.ps1 — для активации через Powershell;
- activate.bat — для активации через CMD.
Для активации просто укажите полный путь до файла. Например:
D:projectnamevenvScriptsactivate.ps1
О том что вы находитесь в виртуальном окружении свидетельствуют следующие надписи:
Вы так же можете сравнить количество установленных пакетов внутри виртуального окружения с тем, что установлено вне:
pip list
Теперь вы можете устанавливать пакеты, которые будут работать только в этой среде.
Для выхода из окружения, за исключением запуска с помощью CMD, используйте команду:
deactivate
Для CMD нужно указать путь до файла «venvScriptsdeactivate.bat».
Управление средами через virtualenvwrapper
Если вы создаете множество виртуальных сред, например для тестирования в разных версиях Python, вы можете использовать virtualenvwrapper. Этот пакет представляет собой надстройку для virtualenv для более удобной работы и устанавливается отдельно.
Благодаря этому пакету мы сможем запускать ваши окружения так:
workon project_name
# вместо
source project_name/venv/bin/activate
Для Windows нужно установить следующий пакет:
pip install virtualenvwrapper-win
Для Linux нужно так же использовать sudo:
sudo pip3 install virtualenvwrapper
Настройки для Linux
Virtualenvwrapper хранит все окружения в одном месте. Это место определяется через переменную WORKON_HOME в Linux и по умолчанию равно директории ‘/home/пользователь/.virtualenvs’. Если вы хотите изменить это расположение — выполните команду экспорта с нужным путем:
export WORKON_HOME = /var/envs/
# Создание директории
source ~/.bashrc
mkdir -p $WORKON_HOME
Следующая команда добавит скрипты в домашний каталог для удобной работы:
source /usr/local/bin/virtualenvwrapper.sh
# Если путь отличается, то файл virtualenvwrapper.sh можно найти так
which virtualenvwrapper.sh
При выполнении предыдущей команды у меня появилась ошибка:
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader
Она исправилась добавлением переменной в env с путем до нужного интерпретатора:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
Настройки для Windows
Все виртуальные среды, которые будут созданы, по умолчанию будут располагаться по пути «C:Users%USERNAME%Envs». Если вам нужно изменить расположение, то создайте переменную WORKON_HOME с нужной директорией:
Важный момент, в случае с Windows, команды virtualenvwrapper не будут выполняться Powershell. Команды работают только через CMD.
Основные команды
Далее мы можем использовать следующие команды (основные):
- mkvirtualenv — создание окружения;
- lsvirtualenv — отображение списка окружений;
- rmvirtualenv — удаление;
- workon — переключение между виртуальными средами;
- deactivate — выход из текущего окружения.
Так мы создадим виртуальную среду:
mkvirtualenv project_name
Так выйдем из созданной среды:
deactivate
Активация окружения:
workon django3.0
Если нужно использовать другую версию Python:
mkvirtualenv -p python2.7 project_name/venv
Получение справки:
mkvirtualenv -h
Создание виртуальных сред со встроенным пакетом Python venv
Ранее, до версии Python >= 3.6 базовая установка интерпретатора шла вместе с пакетом pyenv, но на данный момент он считается устаревшим и более не поддерживается. На его смену пришел venv. В некоторых версиях ОС (Ubuntu/Debian) может потребоваться его отдельная установка:
sudo apt install python3-venv
Проверить, то что пакет venv установлен, можно так:
python -m venv
# или
python3 -m venv
Следующая команда создаст виртуальную среду:
python -m venv C:project_nameproject_venv
# или
python3 -m venv /var/project_name/project_venv
Выбранная версия Python и стандартные библиотеки будут скопированы в указанную папку.
Активация окружения выполняется следующим образом:
# CMD
C:project_nameproject_venvScriptsactivate.bat
# Powershell
C:project_nameproject_venvScriptsActivate.ps1
# Bash
project_name/project_venv/bin/activate
Для выхода из окружения:
# CMD
C:project_nameproject_venvScriptsdeactivate.bat
# Powershell и bash
deactivate
Создание виртуального окружения в Pycharm
В некоторых IDE, например Pycharm, консоль встроенная и по умолчанию у вас будет запускаться интерпретатор выбранный в настройках. В Pycharm вы можете создать или изменить проект привязав его к определенному интерпретатору.
Виртуальную среду можно создать при создании нового проекта. Для этого нужно зайти по следующему пути:
В новом окне выбрать название проекта, место для копирования, интерпретатор и нажать кнопку создания окружения:
Для настройки окружения для старых проектов нужно зайти в настройки:
Во вкладе «Python Interpreter» будет выбор из существующих интерпретаторов (1). Либо можно создать новый (2):
Создание списка установленных пакетов Requirements.txt
Используя виртуальные окружения можно легко создавать файл, в котором будут собраны все названия и версии пакетов для определенного проекта. Этот подход используется для удобства работы, так как одной программой мы сразу установим нужные пакеты.
Так мы получим список пакетов, установленных в виртуальном окружении, в формате читаемом pip:
pip freeze
Следующим способом мы экспортируем этот список в файл Requirements.txt (способ подходит для Bash/CMD/Powershell):
pip freeze > Requirements.txt
На другом компьютере/среде мы можем этот список быстро проверить и установить отсутствующие пакеты следующей командой:
pip install -r Requirements.txt
…
Теги:
#python
#virtualenv
#venv
Если вы работали с несколькими проектами, в которых использовался Python, то наверняка вы встречались с проблемой поломки одного из проекта, потому что обновленная версия библиотеки для другого проекта, не применима для текущего. Т.е. если вы работаете с Python и не используете miniconda или anaconda, то установка и обновление библиотек python постоянно ломает ваши проекты. Эта проблема называется «Ад зависимостей».
Поэтому лучшим подходом будет создавать для каждого отдельного проекта свою среду. В этой статье будет рассмотрена библиотека venv для настройки Virtual Environment для Windows.
Виртуальная среда — это способ Python для разделения зависимостей между проектами.
Создание виртуальной среды — venv в Windows
venv
-это пакет, поставляемый с Python 3.
venv (для Python 3) позволяет управлять отдельными установками пакетов для разных проектов. По сути, venv позволяет вам создавать «виртуальную» изолированную установку Python и устанавливать пакеты в эту виртуальную установку. При переключении проектов вы можете просто создать новую виртуальную среду и не беспокоиться о нарушении работы пакетов, установленных в других средах. При разработке приложений Python всегда рекомендуется использовать виртуальную среду.
Чтобы создать виртуальную среду, перейдите в каталог вашего проекта и запустите venv.
python3 -m venv venv
или
python -m venv venv
venv создаст виртуальную установку Python в директории venv
.
Примечание: Вы должны исключить каталог виртуальной среды из своей системы управления версиями с помощью
.gitignore
.
Активация и деактивация виртуальной среды Python
Далее необходимо активировать виртуальную среду.
Для этого необходимо в консоли cmd запустить .venvScriptsactivate
или файл .venvScriptsactivate.bat
, или .venvScriptsActivate.ps1
.
Префикс вашего рабочего каталога изменится (выделил желтым — venv)
Пока ваша виртуальная среда активирована, pip будет устанавливать пакеты в эту конкретную среду, и вы сможете импортировать и использовать пакеты в своем приложении Python.
Установка пакетов в виртуальную среду
Пример:
pip install requests
pip позволяет вам указать, какую версию пакета установить, используя спецификаторы версии. Например, чтобы установить определенную версию requests
:
pip install requests==2.18.4
Как сохранить пакеты в файл requirements.txt
Pip может экспортировать список всех установленных пакетов и их версий с помощью freeze
команды: pip freeze > requirements.txt
.
Будет выведен список спецификаторов пакетов, таких как:
backports.entry-points-selectable==1.1.0 certifi==2021.5.30 charset-normalizer==2.0.3 distlib==0.3.2 filelock==3.0.12 idna==3.2 platformdirs==2.0.2 requests==2.26.0 six==1.16.0 urllib3==1.26.6 virtualenv==20.6.0
Имейте в виду, что в этом случае в файле requirements.txt будут перечислены все пакеты, которые были установлены в виртуальной среде, независимо от того, откуда они пришли.
Установить пакеты из файла requirements.txt
pip install -r requirements.txt
Как запустить скрипт Python в виртуальной среде. Пример автоматизации с помощью cmd
Для того, чтобы запустить скрипт, достаточно внутри директории с проектом (со средой) запустить команду:
"D:#python##envflask-appvenvScriptspython.exe" "D:#python##envflask-appapp.py"
Либо создать файл cmd с содержимым и запустить его:
@echo off For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b) rem %mydate%_%mytime% "D:#python##envflask-appvenvScriptspython.exe" "D:#python##envflask-appapp.py" 2>"D:#python##envflask-applog_get_data_log_%mydate%_%mytime%.log"
Создание виртуальной среды с помощью PyCharm
Для более легкой работы с виртуальными средами на Windows рекомендую установить PyCharm (Community Edition бесплатная). При создании проекта он сам создаст виртуальную среду и будет запускать файл в этой виртуальной среде:
Новую виртуальную среду можно создать с помощью разных инструментов в Pycharm:
- Virtualenv
- Pipenv
- Poetry
- Conda
Создание виртуальной среды в Ubuntu 20.14
С помощью пакета venv
# Создаем директорию проекта mkdir flask-app # Переходим внутрь директории cd flask-app # Создаем среду myenv python3 -m venv myenv # Активируем среду source myenv/bin/activate
PyCharm is the go-to IDE for Pythonists, no matter what the Python project is. From Django to Flask, PyCharm’s extensive support makes it an attractive out-of-the-box solution.
venv – or “virtual environments” – is a Python module that’s used to create a lightweight and isolated environment for running Python projects. It’s used to keep the dependencies required by different projects isolated from one another.
To create your own venv in Python, the general flow of command you would need to enter looks something like this:
python3 -m venv /path/to/new/virtual/environment
If you need help, run venv with the -h flag to get the list of available commands.
[–upgrade] [–without-pip] [–prompt PROMPT] [–upgrade-deps]
ENV_DIR [ENV_DIR …]
Creates virtual Python environments in one or more target directories.
positional arguments:
ENV_DIR A directory to create the environment in.
optional arguments:
-h, –help show this help message and exit
–system-site-packages
Give the virtual environment access to the system
site-packages dir.
–symlinks Try to use symlinks rather than copies, when symlinks
are not the default for the platform.
–copies Try to use copies rather than symlinks, even when
symlinks are the default for the platform.
–clear Delete the contents of the environment directory if it
already exists, before environment creation.
–upgrade Upgrade the environment directory to use this version
of Python, assuming Python has been upgraded in-place.
–without-pip Skips installing or upgrading pip in the virtual
environment (pip is bootstrapped by default)
–prompt PROMPT Provides an alternative prompt prefix for this
environment.
–upgrade-deps Upgrade core dependencies: pip setuptools to the
latest version in PyPI
Once an environment has been created, you may wish to activate it, e.g. by
sourcing an activate script in its bin directory.
This is a good starting point and great for when you’re building a Python project from scratch. However, integrating it into your IDE’s workflow can require a bit of setup. In addition to this, different project types require different configurations of the venv. Fortunately, PyCharm comes with an easy-to-use integrated solution that makes managing dependencies easy and painless.
How to configure a virtual environment in PyCharm
To create a virtual environment in PyCharm, you need to have Python installed on your computer.
To do this, go to the official Python download page and select the download package that is suitable for your specific operating system. Follow through with the OS-specific instructions to install Python on your machine.
If you are using Python 3.3+, you can skip Part 1 because the built-in venv module is used. However, if you are using a lower version of Python, here is how you can use venv for your project.
Part 1: Downloading and installing venv
To set up and configure a virtual environment on PyCharm, head over to the status bar located at the bottom of your IDE. Click on the option Python Packages.
This will give you a popup screen that looks something like this:
In the search bar, look up virtualenv. The search panel will give you the virtualenv package for you to download and install. Click on the install button in the top right-hand corner.
Part 2: Setting up your project’s virtual environment in PyCharm
Head over to your top navigation bar, click on File, and then Settings. In the left-hand panel, open up the drop-down that says Project:<yourprojectnamehere>. There will be an option called Python Interpreter.
Click on the little settings cog and select the Add option.
You will get a screen that looks like this:
If you are running lower than Python 3.3, you will need to select the dropdown for Base interpreter and find your downloaded venv package. If you are running Python 3.3+, then the option of your base interpreter is automatically chosen for you.
If this is an existing project and you want to import a pre-existing interpreter, you can do so by selecting Existing environment and then changing the Interpreter field to your settings.
Once you’ve done that, click on OK to create a new environment. You will get a progress bar in PyCharm’s IDE that updates you on the creation of the virtual environment.
Once completed, you will get a blank virtual environment with only pip and setuptools .
Part 3: Installing dependencies and packages
Every project requires some sort of dependency and packages to work. You have two options in PyCharm when it comes to installing dependencies and packages for your Python project’s virtual environment.
To do this, you can do so via the + sign in the Python Interpreter section, or via the Python Packages option at the bottom bar of your main IDE’s view.
Option 1 – Installing dependencies and packages for venv via PyCharm Python Interpreter
Clicking on the + sign inside the Python Interpreter will give you a screen of Available Packages. You can use the search bar to find the package and dependency you need for your particular project. For example, if you’re building a Django project, you can search up Django and it will give you the latest option available.
Click on Install Package to install the package as part of your venv requirements. When you click on Install Package, you will get an update on the screen to tell you that it is installing.
Once it is completed, you will get a green notification bar at the bottom of your Available Packages view.
To uninstall any packages you do not need or want, you can do so via the minus – sign on the main Python Interpreter screen.
Once it has successfully uninstalled the package from your venv, you will get a green success message at the bottom of the view.
Option 2 – Installing dependencies and packages for venv via Python Packages
Look at the bottom of your PyCharm IDE and select the option Python Packages. This will give you a popup of the currently installed packages.
In the search bar, look up the package you want to install. Here’s an example of how to install Django.
Click on the install button to add it to your packages and dependencies list. The install button will change to a loading bar. This will disappear once you’ve successfully installed the package to your virtual environment as a dependency.
Once completed, if you click on the x in the search bar, you will see all the packages that are in your Python project’s venv.
To uninstall the package from your Python’s virtual environment and remove it as a dependency, select the package you want and select on the triple dots option to your right. Click on delete.
Once it has been deleted from your project’s dependencies, the package will be removed from the list.
Wrap up
Setting up and managing your virtual environment in Python with venv is pretty simple in PyCharm. There are no terminal commands needed. It is great for both beginners and seasoned developers looking to supercharge their workflow, especially with PyCharm.
Введение | |
Создать новое окружение | |
Выбор версии Python | |
Pycharm | |
Похожие статьи |
Введение
virtualenv это инструмент для изоляции проектов друг от друга.
Можно создавать проекты с разными установленными пакетами, разными версиями Python, Pip и так далее.
Применяется чаще всего с двумя целями:
Первая: писать и тестировать код, который должен работать в разных условиях.
Например, нужна версия программы для Python 2.7 и для Python 3.8.
Вторая: не «портить» установленный системный Python, превращая его в кашу из кучи разных
пакетов.
Если вам нужно настроить virtualenv на хостинге —
инструкция Beget
Чтобы проверить установлен virtualenv или нет выполните
virtualenv —version
Если в результате вы видите что-то похожее, то можно продолжать. Ваша версия может отличаться от 20.0.21 это
нормально.
virtualenv 20.0.21 from c:usersandreiappdatalocalprogramspythonpython38-32libsite-packagesvirtualenv__init__.py
Если в результате вы получили сообщение о том что команда неизвестна — прочитайте статью
«Установка virtualenv в Windows и Linux
Создать новое виртуальное окружение
Создадим директорию, в которой будем хранить виртуальные окружения.
cd ~
mkdir virtualenvs
cd virtualenvs
Создадим новое виртуальное окружение, которое назовём test_env
virtualenv test_env
Или, если мы хотим явно указать, что нужно создать виртуальное окружение именно для Python3.
virtualenv -p python3 test_env
У меня по умолчанию создается для Python3, но в Вашей системе это может быть не так,
поэтому второй вариант предпочтительнее.
created virtual environment CPython3.8.2.final.0-32 in 1410ms
creator CPython3Windows(dest=C:UsersAndreivirtualenvstest_env, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:UsersAndreiAppDataLocalpypavirtualenvseed-app-datav1.0.1)
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
Выбор версии Python для окружения
Чтобы создать окружение с определённой версией Python используйте команду с указанием версии.
Чтобы это сработало нужно иметь установленный Python данной версии
virtualenv —python=/usr/bin/python3.6 python36
Из чего состоит окружение
Зайдём внутрь
test_env и посмотрим, что там находится
cd test_env
dir
Mode LastWriteTime Length Name
—- ————- —— —-
d—— 6/5/2020 9:35 PM Lib
d—— 6/5/2020 9:35 PM Scripts
-a—- 6/5/2020 9:35 PM 42 .gitignore
-a—- 6/5/2020 9:35 PM 421 pyvenv.cfg
cd test_env
dir
Директория Scripts в Linux будет называться bin.
Перейдём туда и изучим состав.
cd Scripts
dir
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 6/5/2020 9:35 PM 2313 activate
-a—- 6/5/2020 9:35 PM 1069 activate.bat
-a—- 6/5/2020 9:35 PM 3179 activate.fish
-a—- 6/5/2020 9:35 PM 1815 activate.ps1
-a—- 6/5/2020 9:35 PM 1216 activate.xsh
-a—- 6/5/2020 9:35 PM 1225 activate_this.py
-a—- 6/5/2020 9:35 PM 529 deactivate.bat
-a—- 6/5/2020 9:35 PM 97159 easy_install-3.8.exe
-a—- 6/5/2020 9:35 PM 97159 easy_install.exe
-a—- 6/5/2020 9:35 PM 97159 easy_install3.exe
-a—l 6/5/2020 9:35 PM 0 libcrypto-1_1.dll
-a—l 6/5/2020 9:35 PM 0 libffi-7.dll
-a—l 6/5/2020 9:35 PM 0 libssl-1_1.dll
-a—- 6/5/2020 9:35 PM 97150 pip-3.8.exe
-a—- 6/5/2020 9:35 PM 97150 pip.exe
-a—- 6/5/2020 9:35 PM 97150 pip3.8.exe
-a—- 6/5/2020 9:35 PM 97150 pip3.exe
-a—- 6/5/2020 9:35 PM 25 pydoc.bat
-a—l 6/5/2020 9:35 PM 0 pyexpat.pyd
-a—l 6/5/2020 9:35 PM 0 python.exe
-a—l 6/5/2020 9:35 PM 0 python3.dll
-a—l 6/5/2020 9:35 PM 0 python38.dll
-a—l 6/5/2020 9:35 PM 0 pythonw.exe
-a—l 6/5/2020 9:35 PM 0 select.pyd
-a—l 6/5/2020 9:35 PM 0 sqlite3.dll
-a—l 6/5/2020 9:35 PM 0 tcl86t.dll
-a—l 6/5/2020 9:35 PM 0 tk86t.dll
-a—l 6/5/2020 9:35 PM 0 unicodedata.pyd
-a—l 6/5/2020 9:35 PM 0 vcruntime140.dll
-a—- 6/5/2020 9:35 PM 97137 wheel-3.8.exe
-a—- 6/5/2020 9:35 PM 97137 wheel.exe
-a—- 6/5/2020 9:35 PM 97137 wheel3.exe
-a—l 6/5/2020 9:35 PM 0 winsound.pyd
-a—l 6/5/2020 9:35 PM 0 _asyncio.pyd
-a—l 6/5/2020 9:35 PM 0 _bz2.pyd
-a—l 6/5/2020 9:35 PM 0 _ctypes.pyd
-a—l 6/5/2020 9:35 PM 0 _ctypes_test.pyd
-a—l 6/5/2020 9:35 PM 0 _decimal.pyd
-a—l 6/5/2020 9:35 PM 0 _elementtree.pyd
-a—l 6/5/2020 9:35 PM 0 _hashlib.pyd
-a—l 6/5/2020 9:35 PM 0 _lzma.pyd
-a—l 6/5/2020 9:35 PM 0 _msi.pyd
-a—l 6/5/2020 9:35 PM 0 _multiprocessing.pyd
-a—l 6/5/2020 9:35 PM 0 _overlapped.pyd
-a—l 6/5/2020 9:35 PM 0 _queue.pyd
-a—l 6/5/2020 9:35 PM 0 _socket.pyd
-a—l 6/5/2020 9:35 PM 0 _sqlite3.pyd
-a—l 6/5/2020 9:35 PM 0 _ssl.pyd
-a—l 6/5/2020 9:35 PM 0 _testbuffer.pyd
-a—l 6/5/2020 9:35 PM 0 _testcapi.pyd
-a—l 6/5/2020 9:35 PM 0 _testconsole.pyd
-a—l 6/5/2020 9:35 PM 0 _testimportmultiple.pyd
-a—l 6/5/2020 9:35 PM 0 _testmultiphase.pyd
-a—l 6/5/2020 9:35 PM 0 _tkinter.pyd
Обратим внимание на скрипты
activate,
activate.bat и
activate.ps1
один из них нам понадобится, а какой — зависит от Вашего окружения.
Под
Linux
нужен будет
activate
Под
Windows
activate.bat для обычной командной строки или
activate.ps1 для
PowerShell.
не все пакеты работают одинаково, некоторые не поддерживают
PowerShell, но
какие-то действия проще делать в нём.
Виртуальные окружения в PyCharm
Вы можете выбрать каким инструментом пользоваться для работы с виртуальными окружениями.
Это делается на этапе создания проекта
По умолчанию доступны
virtualenv, pipenv и
conda
Название для окружения задаётся здесь:
Вы можете увидеть его после создания проекта, запустив терминал
virtualenv | |
Установка virtualenv | |
Применение virtualenv | |
freeze | |
virtualenvwrapper | |
Виртуальное окружение | |
Python | |
Anaconda | |
pyenv | |
venv |
Time to start setting up your development environment! The IDE you’ll see used in this course is PyCharm. This IDE has some advantages because it will perform some tasks for you automatically. For example, it creates a virtual environment when you start a new project. In this course, you’ll still see how to set one up by hand.
First head over to your terminal and make a new folder called django-portfolio
by using the mkdir
command. Then, move into the folder called django-portfolio
and create a virtual environment with venv
. You’ll use the command python 3 -m venv .env
, where .env
is the name of your virtual environment.
Before you can install any packages in there, you still need to activate the virtual environment. Run the command source .env/bin/activate
. Your prompt will change, and you’ll be inside a virtual environment, so any changes you make will be limited to this environment. Then you can install django
with pip
.
00:00
Okay. Let’s get started setting up this development environment. As I mentioned before, I will be using PyCharm for this. PyCharm has some advantages in that it does some of the things that we’re going to do now for you, automatically.
00:14
It creates a virtual environment when you start a new project. So, you wouldn’t have to do some of those things by hand, but to make sure that everyone can work along, we’re just going to set it up by hand. So, for this, I will head over to my terminal.
00:28
You can find your terminal either using Spotlight, typing “terminal,” and then just open up the app. I have it here on fullscreen so that it’s easier for you to see what’s going on.
00:40
I’m sitting inside of my Documents/
folder. Let’s take a look. This is where some knowledge of the command-line interface comes in handy. Inside of this folder, currently we have some Mac-generated files, a materials/
folder, and I have a folder portfolio-done/
, which contains the finished project that we looked at in section one.
01:00
So what I’m going to do now, I’m just going to create a new folder in here. I’m going to use the mkdir
(make directory) command and call it django-portfolio
.
01:13
Okay, let’s check that again.
01:17
Now we have another folder in here called django-portfolio
. Great.
01:23
We’ll move into that folder. What we want to do next is create a virtual environment. For creating a virtual environment, if you’re using anything above Python 3.5, you will be using venv
.
01:38
Over here, inside of my new folder, I’m going to say python3
, because I want to use the Python 3 version, -m
, for module—I always think about it as being for make, because we want to make a virtual environment.
01:52
So, I’m using this venv
module and I’m going to create a virtual environment that I will name here .env
. You can name this anything, so this could be my_venv
, or whatever you want to call it, but I will call it .env
. This .
(dot) makes it a hidden folder and, generally, you don’t want to change anything inside of the virtual environment.
02:12
So, we wait for this to be done. Now,
02:17
you can see that inside of this folder we have a new folder called .env
. This contains our virtual environment. Now, before we can install any packages in here to make sure that they’re safe from the rest of the computer, we will still need to activate the virtual environment.
02:34
I will show you how that goes. We need to source it, so I can say source .env/bin/activate
. This is just a folder structure, so I’m going inside of .env/
folder, inside of the bin/
folder, and then I’m then sourcing the activate
script.
02:52
After running this command, you can see our prompt changed here. I have (.env)
sitting here at the beginning, and this tells you you’re now inside of a virtual environment, which means you’re safe, good to go.
03:03
We can install packages and anything that happens is just going to stay constrained to this virtual environment. So, if we delete this .env/
folder, everything is going to be gone and your computer is not going to be affected by it.
03:17
Now we’re going to go ahead and install Django using pip
.
03:22
That’s as simple as saying pip install django
.
03:29
You can see, if you have a working internet connection, it’s going to fetch Django from the web, and it’s just going to install it inside of your virtual environment.
03:38
Let’s wait for this to be finished. We get a prompt that we should update pip
. You don’t need to do this, but let’s go ahead and call this anyways.
03:54
All right, now with this command,
03:59
we can see which packages do we have installed in our virtual environment. And you can see there’s Django of a current version and some other things that come with the install of Django.
04:08
Great! That means we’re all set with Django. That essentially completes our setup of the development environment that we need. I’m going to show you now how to open it up in PyCharm. But here, if you’re using a different text editor, you will simply just open it up with that text editor of your choice.
04:28
So for this, I head over to PyCharm, open it up, and I’m not going to create a new project, which would do this creation of the virtual environment for me, but instead, I’m heading over to Documents/
and opening up this django-portfolio/
folder.
04:51
So, this is how my PyCharm looks when I open it up. And you can see, I have a specific theme. Yours is probably white if you open it up—don’t worry, you can change all this in the settings. What I’m going to do now also, to make it easier for you to see when I’m working on this, I’m going to activate the presentation mode.
05:13
Okay, we have the presentation mode, and I can switch back on our file structure here on the side, and what we also need is going to be the terminal.
05:30
Okay, and that should make it easy for us to see what’s happening.
05:36
Inside of here, I have the .env/
folder that we created outside of PyCharm. Now, if I had made this project just by creating a new project with PyCharm, this .env/
folder would already be connected and we would be using it automatically. I’m just going to make sure to connect it. Down here in the terminal, we can see that the virtual environment is already switched on by seeing this (.env)
here in the terminal.
06:01
But because PyCharm is a complex program, sometimes things can go wrong, and then it can be difficult to find your way around. So if you open up your project
06:13
and you cannot see this (.env
) before—let’s say it looks like this—then this would mean that PyCharm is currently not recognizing the virtual environment that we created outside.
06:26
There’s a way to fix that. I just want to show you this, probably you’re not going to have to use it, but in case, so that you know where to look. Okay, so you go to PyCharm and Preferences…, and you just scroll to your project settings here—that’s going to have the name of whatever the project is that you’re working on.
06:49
Then, you select Project Interpreter, and here, it’s going to tell you, okay, which is the project interpreter that you’re currently working with, and you can see the installed packages coming up here.
07:00
We see that ours is already activated here, which yours is probably also going to be, but if it gets some error or Django is not showing up here, then you’re going to have to connect to the correct one.
07:12
You can do this by clicking on this cogwheel symbol here and then Add…, and then we want to use our existing environment, so click Existing environment, and now we have to find the path to our Python interpreter.
07:27
You do this by clicking these three little dots here, and it’s going to open up the file structure. Now you have to navigate your file structure—this is my personal folder—into Documents/
, and then inside of your project,
07:42
and here we are in the .env/
folder. So, you’re going to have to find the Python interpreter and that’s sitting inside of .env/
, then inside of bin/
, and now we want to choose the interpreter, and you can just use this python3 link here.
07:59
It’s going to direct you to the right Python installation, so that’s what you want to choose. So, you have to navigate the file structure all the way to your Python interpreter, then click OK. Now you see it’s showing up here.
08:13
Click OK again, and then apply this—Apply. And then, whatever you installed before when we created the virtual environment should show up here—the installed packages. Okay.
08:28
We’ll let PyCharm do its job, and now if I close this and open up a new terminal,
08:40
you can see we’re back again. (.env)
shows up, and if I say pip freeze
, it’s going to tell me all the installed packages. And again, we can see Django is installed here.
08:52
That shows us that we have our virtual environment activated, and that means we’re ready to continue working. And one more thing: if you’re still getting some kind of error popping up, just try to actually close PyCharm and open it again.
09:07
Sometimes there’s, like, a swap file where some information gets stored, and it gets refreshed if you just go PyCharm > Quit, and then open it up again.
09:15
I’m not going to do this now but just so you know, if you have set the virtual environment like this—you have the path defined there, and it’s still throwing an error—just try to restart. It’s the classic turn it off and on again.
09:29
So, we’re all set. This is our environment folder, and we can move on with the next section, where we’re going to create a Django project.
Содержание:развернуть
- Настройка виртуального окружения
-
Создание
-
Активация
-
Автоматическая активация
-
Деактивация
- Альтернативы venv
Все сторонние пакеты устанавливаются менеджером PIP глобально. Проверить это можно просто командой pip show <имя_пакета>
.
root@purplegate:~# pip3 show pytest
Name: pytest
Version: 5.3.2
Summary: pytest: simple powerful testing with Python
Home-page: https://docs.pytest.org/en/latest/
Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, ...
License: MIT license
Location: /usr/local/lib/python3.8/site-packages
Requires: more-itertools, pluggy, py, wcwidth, attrs, packaging
Required-by:
Location — путь до ваших глобальных пакетов.
В большинстве случаев, устанавливать пакеты глобально — плохая идея 🙅♂️ Почему? Рассмотрим простой пример:
Допустим у нас есть два проекта: «Project A» и «Project B». Оба проекта зависят от библиотеки Simplejson. Проблема возникает, когда для «Project A» нужна версия Simplejson 3.0.0, а для проекта «Project B» — 3.17.0. Python не может различить версии в глобальном каталоге site-packages
— в нем останется только та версия пакета, которая была установлена последней.
Решение данной проблемы — создание виртуального окружения (virtual environment).
Основная цель виртуального окружения Python — создание изолированной среды для python-проектов
Это означает, что каждый проект может иметь свои собственные зависимости, независимо от других проектов.
Настройка виртуального окружения
Один из самых популярных инструментов для создания виртуального окружения — virtualenv. Однако в данной статье мы будем рассматривать более свежий инструмент venv.
Устанавливать venv не нужно — он входит в стандартную библиотеку Python
Создание
Для создания виртуального окружения, перейдите в директорию своего проекта и выполните:
python -m venv venv
Флаг -m
указывает Python-у запустить venv
как исполняемый модуль.
venv/
— название виртуального окружения (где будут храниться ваши библиотеки).
В результате будет создан каталог venv/
содержащий копию интерпретатора Python, стандартную библиотеку и другие вспомогательные файлы.
Новые пакеты будут устанавливаться в venv/lib/python3.x/site-packages/
Активация
Чтобы начать пользоваться виртуальным окружением, необходимо его активировать:
venvScriptsactivate.bat
— для Windows;source venv/bin/activate
— для Linux и MacOS.
source
выполняет bash-скрипт без запуска дополнительного bash-процесса.
Проверить успешность активации можно по приглашению оболочки. Она будет выглядеть так:
(venv) root@purplegate:/var/test#
Также новый путь до библиотек можно увидеть выполнив команду:
python -c "import site; print(site.getsitepackages())"
Интересный факт: в виртуальном окружении вместо команды python3 и pip3, можно использовать python и pip
Автоматическая активация
В некоторых случаях, процесс активации виртуального окружения может показаться неудобным (про него можно банально забыть 🤷♀️).
На практике, для автоматической активации перед запуском скрипта, создают скрипт-обертку на bash
:
#!/usr/bin/env bash
source $BASEDIR/venv/bin/activate
python $BASEDIR/my_app.py
Теперь можно установить права на исполнение и запустить нашу обертку:
chmod +x myapp/run.sh
./myapp/run.sh
Деактивация
Закончив работу в виртуальной среде, вы можете отключить ее, выполнив консольную команду:
deactivate
Альтернативы venv
На данный момент существует несколько альтернатив для venv:
- pipenv — это pipfile, pip и virtualenv в одном флаконе;
- pyenv — простой контроль версий Питона;
- poetry — новый менеджер для управления зависимостями;
- autoenv — среды на основе каталогов;
- pew — инструмент для управления несколькими виртуальными средами, написанными на чистом Python;
- rez — интегрированная система конфигурирования, сборки и развертывания пакетов для программного обеспечения.
Стоит ли использовать виртуальное окружение в своей работе — однозначно да. Это мощный и удобный инструмент изоляции проектов друг от друга и от системы. С помощью виртуального окружения можно использовать даже разные версии Python!
Однако рекомендуем присмотреться к более продвинутым вариантам, например к pipenv или poetry.