Виртуальное окружение python (venv)
Содержание:
- 12.1. Введение
- Install Python through apt-get
- Your First Python Program
- via pip¶
- Как работает виртуальная среда?
- Работа с виртуальными окружениями¶
- Setup Virtual Programming Environment for Python3
- Виртуальное окружение
- Usage
- virtualenvwrapper
- Установка Django через pipenv
- Управление виртуальной средой при помощи virtualenvwrapper
- Различные инструменты для создания виртуального окружения в Python
- How Does a Virtual Environment Work?#
- Что такое виртуальная среда?
- License¶
- Вывод
12.1. Введение
Приложения Python часто используют пакеты и модули, которые не поставляются как часть стандартной библиотеки. Приложениям иногда будут необходимы специфические версии библиотеки, потому что приложение может требовать, чтобы конкретный баг был исправлен или само приложение может быть написано, используя устаревшую версию интерфейса библиотеки.
Это означает, что может отсутствовать возможность для одной установки Python удовлетворить требования каждого приложения. Если приложению A нужна версия 1.0 конкретного модуля, но приложение B нуждается в версии 2.0, то требования конфликтуют и установка любой версии 1.0 или 2.0 оставит одно приложении неспособным запуститься.
Решением этой проблемы является создание virtual environment (docs.python.org/3/glossary.html#term-virtual-environment), автономного дерева директорий, которое содержит инсталляцию Python для конкретной версии Python, плюс ряд дополнительных пакетов.
Различные приложения могут потом использовать разные виртуальные окружения (virtual environments). В примере выше, чтобы разрешить конфликт требований, приложение A может иметь свою собственную виртуальную среду с установленной версией 1.0, в то время как у приложения B будет другое виртуальное окружение с версией 2.0. Если B требует библиотеку, которая должна быть обновлена до версии 3.0, это не касается окружения приложения A.
Install Python through apt-get
Installing Python through the apt-get command is pretty simple. First, you need to update your system repository index with that of the Internet so that the latest available version can be installed. Run the following command as sudo in order to do so:Advertisement
$ sudo apt-get update
Since we already have Python installed on our system, as verified in the previous section, we only need to upgrade it to the latest version as follows:
$ sudo apt-get upgrade python3
The system might ask you the password for sudo as only an authorized user can add/remove and upgrade software on Ubuntu.
The system will also prompt you with a y/n option in order to confirm the upgrade; please enter Y and then hit Enter to continue.
The latest available version of Python will now be installed on your system.
Now when you check the version number of Python, you will see an updated installation:
In case you did not have Python installed in the first place, you can install it as sudo through the following command after running apt-get update:
$ sudo apt-get install python3
Your First Python Program
You can create and run your first Python program both inside and outside of the Virtual Working environment. In this example, we will tell you how to write a sample Python program inside the virtual environment you just created.
In order to get inside the environment, first change the directory to your environments folder and then activate whichever virtual environment you want to activate.
Once you are inside the virtual environment, you can use your favorite text editor to create your first Python program. In this example, we are using the Nano editor to create a program.
$ nano first_program.py
This command will open a blank text file by the name of first_program.py
Write or paste the following line in your first Python program:
print("This is my first Python program :) :)")
Save the file by hitting Ctrl+X, then entering Y and hitting Enter. Your program is now saved in your virtual environment.
Run the following command in order to execute the Python program:
$ python
Example:
$ python
You can then deactivate the environment. Please remember that when you want to execute this program outside the virtual environment, you might have to use the Python3 commands instead of Python commands.
via pip¶
Alternatively you can install it within the global Python interpreter itself (perhaps as a user package via the
flag). Be cautious if you are using a python install that is managed by your operating system or
another package manager. might not coordinate with those tools, and may leave your system in an
inconsistent state. Note, if you go down this path you need to ensure pip is new enough per the subsections below:
python -m pip install --user virtualenv python -m virtualenv --help
wheel
Installing virtualenv via a wheel (default with pip) requires an installer that can understand the
tag (see PEP-503), with pip this is version (released 2016
November). Furthermore, in case you’re not installing it via the PyPi you need to be using a mirror that correctly
forwards the tag (notably the OpenStack mirrors don’t do this, or older
devpi versions — added with version ).
Как работает виртуальная среда?
Что именно имеется ввиду под «активировать» среду? Понимание того, что именно происходит под капотом, может быть очень важно для разработчика, особенно когда вам нужно понять выполнение виртуальной среды, разрешение зависимостей, и так далее. Чтобы объяснить, как это работает, для начала проверим расположения разных исполняемых файлов python
С «деактивированной» средой запускаем:
Чтобы объяснить, как это работает, для начала проверим расположения разных исполняемых файлов python. С «деактивированной» средой запускаем:
Shell
$ which python
/usr/bin/python
1 |
$which python usrbinpython |
Теперь активируем и снова запустим команду:
Python
$ source env/bin/activate
(env) $ which python
/Users/michaelherman/python-virtual-environments/env/bin/python
1 |
$source envbinactivate (env)$which python Usersmichaelhermanpython-virtual-environmentsenvbinpython |
Активировав среду, мы теперь получаем другой путь к исполнимому файлу python, так как в активной среде, переменная среды $PATH несколько отличается.
Обратите внимание на разницу между первым путем в $PATH до и после активации:
Python
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
$ source env/bin/activate
(env) $ echo $PATH
/Users/michaelherman/python-virtual-environments/env/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
1 |
$echo$PATH usrlocalbinusrbinbinusrsbinsbin $source envbinactivate (env)$echo$PATH Usersmichaelhermanpython-virtual-environmentsenvbinusrlocalbinusrbinbinusrsbinsbin |
В последнем примере, каталог bin нашей виртуальной среды теперь находится в начале пути. Это значит, что это первый каталог в поиске, когда мы запускаем исполняемый файл в командной строке. Таким образом, оболочка использует экземпляр нашей виртуальной среды в Python, а не в системной версии.
Это наталкивает на вопросы:
- В чем разница между этими исполняемыми файлами?
- Каким образом виртуальная среда исполняемого файлаPython может использовать что-либо, кроме системных сайт-пакетов?
Это можно объяснить тем, как Python запускается и где он расположен в системе. Нет разницы между двумя исполняемыми файлами Python. Суть заключается в расположении каталога
Когда Python запускается, он ищет путь своего двоичного файла (в виртуальной среде он является копией или символической ссылке системного бинарного файла Python). Далее, он устанавливает расположение sys.prefix и sys.exec_prefix согласно с этим расположением, опуская часть bin в пути.
Путь, находящийся в sys.prefix далее используется для поиска каталога site-packages, путем поиска по связанного с ним пути lib/pythonX.X/site-packages/, где Х.Х – это версия используемого вами Python.
В нашем примере, бинарный файл расположен в /Users/michaelherman/python-virtual-environments/env/bin, это значит, что sys.prefix может быть /Users/michaelherman/python-virtual-environments/env, следовательно, используемый каталог site-packages может быть /Users/michaelherman/python-virtual-environments/env/lib/pythonX.X/site-packages. Наконец, этот путь наложен в массиве sys.path, который содержит все расположения, которые пакет может использовать.
Работа с виртуальными окружениями¶
Создание нового виртуального окружения, в котором Python 3.7
используется по умолчанию:
$ mkvirtualenv --python=/usr/local/bin/python3.7 pyneng New python executable in PyNEng/bin/python Installing distribute........................done. Installing pip...............done. (pyneng)$
В скобках перед стандартным приглашением отображается имя виртуального
окружения. Это означает, что вы находитесь в нём. В virtualenvwrapper по
Tab работает автодополнение имени виртуального окружения. Это особенно
удобно в тех случаях, когда виртуальных окружений много. Теперь в том
каталоге, который был указан в переменной окружения WORKON_HOME, создан
каталог pyneng:
(pyneng)$ ls -ls venv total 52 .... 4 -rwxr-xr-x 1 nata nata 99 Sep 30 16:41 preactivate 4 -rw-r--r-- 1 nata nata 76 Sep 30 16:41 predeactivate 4 -rwxr-xr-x 1 nata nata 91 Sep 30 16:41 premkproject 4 -rwxr-xr-x 1 nata nata 130 Sep 30 16:41 premkvirtualenv 4 -rwxr-xr-x 1 nata nata 111 Sep 30 16:41 prermvirtualenv 4 drwxr-xr-x 6 nata nata 4096 Sep 30 16:42 pyneng
Выход из виртуального окружения:
(pyneng)$ deactivate $
Для перехода в созданное виртуальное окружение надо выполнить команду
workon:
$ workon pyneng (pyneng)$
Если необходимо перейти из одного виртуального окружения в другое, то
необязательно делать deactivate, можно перейти сразу через workon:
$ workon Test (Test)$ workon pyneng (pyneng)$
Если виртуальное окружение нужно удалить, то надо использовать команду
rmvirtualenv:
$ rmvirtualenv Test Removing Test... $
Посмотреть, какие пакеты установлены в виртуальном окружении можно
командой lssitepackages:
Setup Virtual Programming Environment for Python3
First, let us get familiar with what is a Virtual Programming Environment for Python projects. You can assume it as an isolated space on your system where you can create Python projects having their own set of dependencies that do not affect anything outside of the project. When you are inside this environment, you can make use of Python and pip commands directly instead of using pip3 and Python3 commands. However, outside of this environment, you will have to use the pip3 and Python3 commands to develop and run your applications.
here the step by step procedure for you to create and activate a new virtual programming environment for Python:
Step 1: Install the Prerequisites
Before installing pip, you will need to add a few prerequisites that will help you in setting up your virtual space. Run the following command as sudo in order to install the build-essential, libssl-dev, libffi-dev and python-dev packages to your system:
$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev
Please click Y and then hit Enter when the system prompts you with a y/n option to continue installation.
All these packages will then be installed to your system.
Step 2: Install pip3 if it is already not installed on your system
You can verify if pip3 is installed on your system or not simply by checking its version number. Please run the following command to check the version:
$ pip3 -V
The above output shows that pip 10.0.1 is already installed on my system.
If your output suggests that pip is not installed on your system, please run the following commands as sudo to install the latest pip3 package:
$ sudo apt-get update
And then,
$ sudo apt install python3-pip
Now that pip3 is installed on your system, you can install any pip package by using the following command syntax:
$ pip3 install
Step 3: Create a virtual environment through Python3-venv
In order to create the virtual environment, you need the Python3-venv package installed on your system. Please run the following command as sudo in order to install it:
$ sudo apt install -y python3-venv
Now we will create a folder for your Python virtual environments where you can create your stand-alone virtual environments. You can use the following syntax to create your own working directory:
$ mkdir
Example:
$ mkdir environment_directory
Now change the working directory to the environments directory that you just created:
$ cd environment_directory
In the environments directory, we will be creating a new virtual environment where you can write your Python programs and create projects.
Syntax:
$ python3 -m venv environment_name
Example:
$ python3 -m venv sample_environment
When you list the contents of your Python environment through the ls command, you will be able to see the following basic contents:
bin include lib lib64 pyvenv.cfg
Example:
$ ls sample_environment
This means that your environment is successfully set up.
Step 4: Activate the Python Virtual Environment
When you want to use the newly created virtual environment, you first need to activate it. Use the following command to syntax to do so:
Syntax:
$ source environment_name/bin/activate
Example:
$ source sample_environment/bin/activate
When you activate the environment, you will see how your environment name appears inside brackets, suggesting that you are now inside the environment.
Whenever you want to deactivate the environment, you can use the following command:
$ deactivate
This will deactivate the virtual environment and you can work outside of it.
Виртуальное окружение
Перед установкой Django мы попросим тебя установить крайне полезный инструмент, который поможет тебе содержать среду разработки в чистоте. Можно пропустить этот шаг, но мы очень советуем этого не делать. Использование лучших рекомендаций с самого начала убережёт от многих проблем в будущем!
Итак, давай создадим виртуальное окружение (оно также называется virtualenv). Virtualenv будет изолировать настройки Python/Django для каждого отдельного проекта. Это значит, что изменения одного сайта не затронут другие сайты, которые ты разрабатываешь. Удобно, правда?
Всё, что тебе нужно сделать — найти директорию, в которой мы создадим ; домашний каталог вполне подойдёт. Для Windows адрес будет выглядеть так: (где — твоё имя пользователя).
Мы будем использовать отдельную директорию в домашнем каталоге:
command-line
Мы создадим виртуальное окружение под именем . В общем случае команда будет выглядеть так:
command-line
Виртуальное окружение: Windows
Чтобы создать новое , тебе нужно открыть командную строку и набрать . Это будет выглядеть так:
command-line
Здесь — имя твоего . Ты можешь выбрать другое имя, но используй только строчные буквы, без пробелов и специальных символов. Имя виртуального окружения выбирай покороче — тебе придётся часто его набирать!
Виртуальное окружение: Linux и OS X
В Linux и OS X достаточно набрать , чтобы создать :
command-line
— имя виртуального окружения . Можешь выбрать другое имя, но используй только строчные буквы и никаких пробелов. Имя виртуального окружения лучше выбирать покороче — набирать его предстоит не раз!
Usage
All three tools use a similar workflow.
Creation
Use venv or virtualenv to create the virtual environment within your project directory. Be sure to exclude the venv directory from version control—a copy of will be enough to rebuild it.
venv
Note: This method replaces the pyvenv script, which is removed in 3.8.
This tool is provided by (3.3+):
$ python -m venv envname
virtualenv
Use virtualenv for Python 3, available in .
$ virtualenv envname
And virtualenv2 for Python 2, available in .
$ virtualenv2 envname
Activation
Use one of the provided shell scripts to activate and deactivate the environment. This example assumes bash is used.
$ source envname/bin/activate (envname) $
Once inside the virtual environment, modules can be installed with pip and scripts can be run as normal.
To exit the virtual environment, run the function provided by :
(envname) $ deactivate
virtualenvwrapper
virtualenvwrapper allows more natural command line interaction with your virtual environments by exposing several useful commands to create, activate and remove virtual environments. This package is a wrapper for both and .
Installation
Install the package from the official repositories.
Now add the following lines to your :
export WORKON_HOME=~/.virtualenvs source /usr/bin/virtualenvwrapper.sh
The line can cause some slowdown when starting a new shell. To fix this try using , which will load virtualenvwrapper the first time a virtualenvwrapper function is called.
Re-open your console and create the folder:
$ mkdir $WORKON_HOME
Note: This seems to happen now automatically after re-open the console for the first time.
Basic usage
Create the virtual environment:
$ mkvirtualenv -p /usr/bin/python2.7 my_env
Activate the virtual environment:
$ workon my_env
Install some package inside the virtual environment (say, Django):
(my_env) $ pip install django
After you have done your things, leave the virtual environment:
(my_env) $ deactivate
Установка Django через pipenv
Для того чтобы оценить в действии, создадим новую директорию и установим Django. Первым делом переместимся на рабочий стол Desktop. Там будет создана новая директория , куда нам нужно будет попасть при помощи команды .
Shell
$ cd ~/Desktop
$ mkdir django
$ cd django
1 |
$cd~Desktop $mkdirdjango $cddjango |
Теперь используем Pipenv для инсталляции Django.
Shell
$ pipenv install django==3.0
1 | $pipenv install django==3.0 |
Если загляните внутрь нашей папки, то увидите, что в ней появилось два новых файла: и . Теперь у нас есть вся информация, необходимая для создания нового виртуального окружения, однако пока ничего не активировано. Исправим положение через .
Shell
$ pipenv shell
1 | $pipenv shell |
При работе на Ubuntu вы увидите, что название текущей директории в командной строке взято в скобки. Это значит, что виртуальное окружение активировано. Будучи внутри папки , перед знаком командной строки мы увидим .
Стоит иметь в виду, что из-за в системе Windows, сейчас нет возможности получить визуальное подтверждение об активации виртуального окружения. Однако в следующей секции можно запустить — тогда станет ясно, что виртуальное окружение Django установлено должным образом.
Shell
(django) $
1 | (django)$ |
Все работает! Теперь создаем новый проект Django под названием при помощи следующей команды. Не забудьте в конце поставить точку.
Shell
(django) $ django-admin startproject test_project .
1 | (django)$django-admin startproject test_project. |
Немного остановимся на причине использования точки (.) в предыдущей команде. Если вы просто запустите то Django по умолчанию создаст следующую структуру:
Структура
Shell
└── test_project
├── manage.py
└── test_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
1 |
└──test_project ├──manage.py └──test_project ├──__init__.py ├──settings.py ├──urls.py └──wsgi.py |
Как видите, создается новая директория , в ней файл и еще одна директория . Чувствуется повторение, ведь ранее мы уже создали директорию на рабочем столе и переместились в нее. Будет лучше выполнить команду с точкой на конце. Это нужно для установки в данную конкретную папку — на сей раз результат будет таков:
Структура
Shell
├── manage.py
└── test_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
1 |
├──manage.py └──test_project ├──__init__.py ├──settings.py ├──urls.py └──wsgi.py |
Стоит отметить, что по сути особого значения не имеет, будет ли на конце команды точка или нет, однако но некоторые разработчики предпочитают ее включать.
Осталось убедиться, что все работает. Для этого запустим локальный веб-сервер Django.
Shell
(django) $ python manage.py runserver
1 | (django)$python manage.pyrunserver |
Мы получим такой ответ:
Shell
Watching for file changes with StatReloader
Performing system checks…
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run ‘python manage.py migrate’ to apply them.
May 05, 2020 — 12:36:09
Django version 3.0, using settings ‘test_project.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
1 |
Watching forfilechanges with StatReloader Performing system checks… System check identified no issues(silenced). You have17unapplied migration(s).Your project may notwork properly untilyou apply the migrations forapp(s)admin,auth,contenttypes,sessions. Run’python manage.py migrate’toapply them. May05,2020-123609 Django version3.0,using settings’test_project.settings’ Starting development server athttp127.0.0.18000 Quit the server with CONTROL-C. |
При посещении откроется следующая страница:
Приветственная страница Django
Для остановки локального сервера используйте комбинацию . После этого выйти из виртуального окружения можно при помощи команды .
Shell
(django) $ exit
1 | (django)$exit |
Вновь активировать виртуальное окружение можно в любое время. — для этого используется команда в терминале.
Если вы сталкиваетесь с виртуальными окружениями впервые, сейчас они могут показаться немного запутанными, но не беспокойтесь — по ходу изучения все прояснится. Базовый принцип строится на установке новых пакетов через , их активации с и выхода через по мере завершения процесса.
Будет не лишним отметить, что через командную строку за раз можно активировать только одно виртуальное окружение. Мы будем создавать новое виртуальное окружение для каждого проекта. По этой причине перед созданием нового проекта не забывайте выходить из текущего окружения через или открывайте другие вкладки для новых проектов.
Управление виртуальной средой при помощи virtualenvwrapper
Несмотря на то, что виртуальная среда определенно решает ряд проблем с управлением пакетами, она не идеальна. После создания нескольких виртуальных сред, вы обнаружите, что они создают некоторые проблемы сами по себе, большая часть которых вращается вокруг управления самими виртуальными средами. Чтобы помочь с этим, был создан инструмент virtualenvwrapper, который представляет собой набор оберточных скриптов вокруг основного инструмента virtualenv.
Самые полезные функции virtualenvwrapper:
- Организация каждой виртуальной среды в одном расположении;
- Предоставляются методы, которые помогут вам легко создавать, удалять и копировать виртуальную среду, а также,
- Предоставляет одну команду для переключения между средами
Некоторые функции могут показаться узкими, или незначительными, вы быстро поймете, что они – это отличные инструменты для вашего рабочего ритма.
Перед началом, вы можете скачать обёртку при помощи pip:
Shell
$ pip install virtualenvwrapper
1 | $pip install virtualenvwrapper |
После завершения установки, нам нужно активировать его функции оболочки. Это можно сделать, запустив источник установленного скрипта virtualenvwrapper.sh. Кода вы в первый раз устанавливаете его при помощи pip, выдача установки укажет вам точное расположение virtualenvwrapper.sh. Впрочем, вы можете просто запустить команду:
Shell
$ which virtualenvwrapper.sh
/usr/local/bin/virtualenvwrapper.sh
1 |
$which virtualenvwrapper.sh usrlocalbinvirtualenvwrapper.sh |
Используя данный путь, добавьте следующие три строки в стартовый файл вшей оболочки. Если оболочку Bash, вы можете разместить эти строки и в файле ~/.bashrc file or ~/.profile. Для других оболочек, таких как zsh, csh или fish, вам может понадобиться определенные файлы запуска для этой оболочки. Главное, чтобы эти команды выполнялись при открытии новой оболочки или входе в неё.
Shell
export WORKON_HOME=$HOME/.virtualenvs # optional
export PROJECT_HOME=$HOME/projects # optional
source /usr/local/bin/virtualenvwrapper.sh
1 |
export WORKON_HOME=$HOME.virtualenvs# optional export PROJECT_HOME=$HOMEprojects# optional sourceusrlocalbinvirtualenvwrapper.sh |
Наконец, перезагружаем файл запуска:
Shell
$ source ~/.bashrc
1 | $source~.bashrc |
Теперь здесь должен быть каталог, расположенный в $WORKON_HOME, который содержит все данные и файлы virtualenvwrapper:
Shell
$ echo $WORKON_HOME
/Users/michaelherman/.virtualenvs
1 |
$echo$WORKON_HOME Usersmichaelherman.virtualenvs |
Кроме этого, у вас теперь в распоряжении имеются доступные команды оболочки, которые помогут в управлении виртуальной средой. Вот несколько из них:
- workon
- deactivate
- mkvirtualenv
- cdvirtualenv
- rmvirtualenv
Теперь, когда бы вы не начинали новый проект, все что вам нужно, это:
Shell
$ mkvirtualenv my-new-project
(my-new-project) $
1 |
$mkvirtualenv my-new-project (my-new-project)$ |
Это создаст и активирует новую виртуальную среду в каталоге, расположенном в $WORKON_HOME, где хранятся все среды virtualenvwrapper.
Чтобы прекратить использование этой среды, вам всего лишь нужно её деактивировать, как мы делали это раньше:
Shell
(my-new-project) $ deactivate
$
1 |
(my-new-project)$deactivate $ |
Если у вас есть широкий выбор виртуальных сред, вы можете отсортировать их по списку при помощи функции workon:
Shell
$ workon
my-new-project
my-django-project
web-scraper
1 |
$workon my-new-project my-django-project web-scraper |
И, наконец, активировать:
Python
$ workon web-scraper
(web-scraper) $
1 |
$workon web-scraper (web-scraper)$ |
Если вы хотите иметь один инструмент и переключаться между версиями Python, virtualenv позволит вам это сделать. Virtualenv содержит параметр -р, который позволяет вам выбрать, какую версию Python использовать. Совместите это с командой which, и мы можем быстро выбрать предпочитаемую версию Python. К примеру, скажем, что мы хотим выбрать Python 3 в качестве нашей основной версии:
Shell
$ virtualenv -p $(which python3) blog_virtualenv
1 | $virtualenv-p$(which python3)blog_virtualenv |
Это создаст новую среду python3.
Так как же это работает? Команда which используется для поиска переданной команды в вашей переменной $PATH и возвращает полный путь к этой команде. Так, полный путь к Python3 вернулся параметру -р , который в свою очередь принимает PYTHON_EXE. Это также можно практиковать и в Python2. Просто замените python3 на python2 (или python, если вы используете python2 по умолчанию).
Теперь вам не нужно помнить где вы установили вашу виртуальную среду. Вы можете просто удалить или копировать ее как хотите, разгрузив ваш проектный каталог.
Различные инструменты для создания виртуального окружения в Python
1. virtualenv
Преимущества:Легкость модернизации с помощью и работа с различными версиями Python. Также поддерживает Python 2.7+.
Недостатки:Двоичный файл интерпретатора Python копируется в новое место расположения, в котором он будет доступен для чтения. Помимо этого, необходима отдельная установка для Python.
Примечание: можно использовать с virtualenvwrapper.
2. Python Environment Wrapper (pew)
выступает в качестве упаковщика и используется для любой команды. Подробную информацию можно посмотреть в документации.
Преимущества:Упрощает работу с виртуальными окружениями. С помощью этой команды можно создать новое окружение, установить список пакетов и активировать окружение.
Недостатки:Главная проблема заключается в ограничении поддержки. Последнее изменение в коде было внесено в марте 2018, почти год назад.
3. venv
также используется для установки и получения доступа к виртуальным окружениям. Приобрел популярность, начиная с Python 3.5. Здесь можно ознакомиться с документацией.
Преимущества:Генерирует файл конфигурации, который распознается двоичным файлом Python, и не требует копирования бинарного файла в новое место. Более того, активно поддерживается со стороны разработчиков Python.
Недостатки:Не подходит для версий Python до 3.3.
Благодаря этому инструменту работа с Python и Виртуальными Окружениями выходит на новый уровень, поскольку он сочетает в себе поддержку управления пакетами и окружением. Документацию можно посмотреть здесь.
Преимущества:Легко указать окружение, с которым вы работаете. Помимо этого, с его помощью можно создать отдельные секции для окружения, такие как production и test-development.
Недостатки:Требует отдельной загрузки с помощью .
Все эти инструменты помогут в решении проблемы. С их помощью легко создать Виртуальное Окружение. Просто выберите любой и научитесь с ним работать.
В качестве лучшего инструмента для создания виртуальных окружений я выбрал . Рассмотрим его базовые особенности.
Для установки с помощью используйте следующую команду.
Создание Окружения
После установки начинается работа с окружением. Его можно создать в любой папке. Я выбрал . Просто установите любой пакет внутри папки. Используем . Он автоматически установит окружение и создаст и .
запросы для установки pipenv
В директории будут созданы два файла. , включающий список пакетов, версию Python и прочую информацию. Файл блокировки (lock file) генерируется в качестве .
Pipfile
Pipfile.lock
Для активации окружения используется . Теперь мы находимся в Виртуальном Окружении. Чтобы заглянуть внутрь Python и проверить наличие пакетов с помощью , используется команда . Если ошибок нет, это значит, что пакет успешно установлен.
Inside environment
Выйти из окружения можно с помощью . После закрытия окружения невозможно получить доступ к пакету .
Outside environment
Запустить команды можно прямо внутри окружения без вызова . Для этого используется команда . Таким образом, для запуска Python можно использовать следующую команду:
Каждый раз при установке пакетов в Python мы указываем список в файле под названием requirements.txt. Затем просто запускаем приведенную ниже команду и устанавливаем все пакеты сразу.
При работе с существует метод для создания текста к этому файлу. Просто используйте команду:
Требования к текстовому файлу
Отобразится текст для файла , который могут использовать другие.
Удаление Окружения
Окружение можно легко удалить с помощью команды и создать снова, используя .
Однако файлы в каталоге останутся на месте. Чтобы избавиться от них, нужно удалить каталог.
How Does a Virtual Environment Work?#
What exactly does it mean to “activate” an environment? Knowing what’s going on under the hood can be pretty important for a developer, especially when you need to understand execution environments, dependency resolution, and so on.
To explain how this works, let’s first check out the locations of the different executables. With the environment “deactivated,” run the following:
Now, activate it and run the command again:
After activating the environment, we’re now getting a different path for the executable because, in an active environment, the environment variable is slightly modified.
Notice the difference between the first path in before and after the activation:
In the latter example, our virtual environment’s directory is now at the beginning of the path. That means it’s the first directory searched when running an executable on the command line. Thus, the shell uses our virtual environment’s instance of Python instead of the system-wide version.
Note: Other packages that bundle Python, like Anaconda, also tend to manipulate your path when you activate them. Just be aware of this in case you run into problems with your other environments. This can become a problem if you start activating multiple environments at once.
This raises the following questions:
- What’s the difference between these two executables anyway?
- How is the virtual environment’s Python executable able to use something other than the system’s site-packages?
This can be explained by how Python starts up and where it is located on the system. There actually isn’t any difference between these two Python executables. It’s their directory locations that matter.
When Python is starting up, it looks at the path of its binary. In a virtual environment, it is actually just a copy of, or symlink to, your system’s Python binary. It then sets the location of and based on this location, omitting the portion of the path.
The path located in is then used for locating the directory by searching the relative path , where is the version of Python you’re using.
Что такое виртуальная среда?
В корне своем, главная задача виртуальной среды Python – создание изолированной среды для проектов Python.
Это значит, что:
И так, в нашем небольшом примере вверху, нам просто нужно создать раздельную виртуальную среду для проектов А и Б. Каждая среда, в свою очередь, сможет зависеть от любой версии проекта В, независимо друг от друга.
Это хорошо тем, что у нас нет ограничений на то, в скольких экземплярах будет наша виртуальная среда, так как они являются обычными каталогами, в которых содержится несколько скриптов. Плюс, их очень легко создать при помощи инструментов командной строки virtualenv или pyenv.
License¶
Copyright Doug Hellmann, All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Doug Hellmann not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DOUG HELLMANN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL DOUG HELLMANN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
Вывод
В данной статье вы узнали больше о том, как хранятся и разрешаются зависимости Python, как использовать различные инструменты для помощи в обходе различных проблем, связанных с пакетами и версиями.
Как вы видите, благодаря огромному сообществу Python, в вашем распоряжении имеется обширное количество инструментов для помощи с решением этих проблем. С вашим ростом в качестве разработчика, убедитесь, что вы уделили время тому, как использовать эти инструменты в своих интересах. Вы даже можете найти особенное использование для них, или применять схожие концепции в других языках программирования, которые вы используете.