- Установка и использование virtualenv в Python
- Отличия virtualenv и venv
- Установка virtualenv с помощью pip
- Создание виртуальной среды
- Деактивации virtualenv
- Удаление виртуальной среды
- Решение популярных ошибок
- Виртуальное окружение Python (venv)
- Настройка виртуального окружения
- Создание
- Активация
- Автоматическая активация
- Деактивация
- Альтернативы venv
- Краткий ликбез по Virtual Environments в Python 2.7
- Инструмент virtualenv
- Создание виртуальной среды Python
- Активация виртуальной среды Python
- Деактивация виртуальной среды Python
- Удаление виртуальной среды Python
- Дополнительные замечания
- Заморозка пакетов виртуальной среды Python
- Импорт пакетов виртуальной среды Python
- Инструмент virtualenvwrapper
- Создаем среду при помощи команд virtualenvwrapper
- Работа над виртуальной средой при помощи команд virtualenvwrapper
- Деактивация при помощи команд virtualenvwrapper
- Удаление при помощи команд virtualenvwrapper
- Другие полезные команды virtualenvwrapper
- Инструмент virtualenv-burrito
- Инструмент autoenv
- Python venv: how to create, activate, and delete
- Creating a Python venv
- Python 3.4 and above
- All other Python versions
- Python venv activation
- Linux and MacOS venv activation
- Windows venv activation
- How a Python venv works
- Deactivate the Python venv
- Deleting a Python venv
- Delete a venv created with Virtualenv or python -m venv
- Delete a venv with Pipenv
- Delete a venv with Poetry
- Keep learning
- About the author
- Erik van Baaren
Установка и использование virtualenv в Python
virtualenv — это инструмент для создания изолированной среды Python. У такой среды есть отдельна установка python, при ее использовании загруженные библиотеки недоступны другим. Можно сделать так, чтобы у этой среды не было доступа к глобальным библиотекам.
Virtualenv — простой и рекомендованный способ настройки среды Python.
Отличия virtualenv и venv
Venv — это пакет, который идет по умолчанию с Python 3.3+. В версии Python 2 его нет.
Virtualenv — более продвинутая библиотека. По ссылке можно ознакомиться с основными отличиями.
Виртуальную среду можно создать и с помощью venv, но все-таки рекомендуется установить и использовать virtualenv для полноценной работы.
Установка virtualenv с помощью pip
Для установки virtualenv с Python нужно использовать pip. Желательно предварительно обновить этот инструмент.
Или используйте python3 , если python ссылается на 2 версию.
После обновления можно установить и virtualenv:
Создание виртуальной среды
1. Перейдите в директорию, в которой вы хотите создать виртуальную среду(например папка проекта).
2. Создайте виртуальную среду, при необходимости указав конкретную версию Python. Следующая команда создает virtualenv с именем venv_name и использует флаг -p , чтобы указать полный путь к версии Python:
Назвать среду можно как угодно
После выполнения команды вы увидите логи:
Эта команда создает локальную копию среды. Работая с ней, важно не забывать об активации, чтобы использовались нужные версии конкретных инструментов и пакетов.
Если при установке возникла ошибка setuptools pip failed with error code 1` error , используйте следующую команду, чтобы решить проблему:
3. Для активации новой виртуальной среды используйте команду:
После этого название текущей среды отобразится слева от символа ввода: (venv_name) username@desctop:
Теперь при установке любого пакета с помощью pip он будет размещаться в папках этой среды, изолированно от глобальной установки.
Деактивации virtualenv
После завершения работы деактивировать виртуальную среду можно с помощью команды deactivate .
Введите ее и приставка venv_name пропадет. Вы вернетесь к использованию глобально версии python.
Удаление виртуальной среды
Для удаления виртуальной среды достаточно просто удалить папку проекта. Для этого используется следующая команда:
Решение популярных ошибок
Ошибки при создании virtualenv. При попытке создать virtualenv с Python 3.7 могут возникнуть следующие ошибки.
Для их исправления нужно добавить следующую строку в .bash_profile.
Использование полного пути к виртуальной среде. Может быть такое, что при использовании команды virtualenv будет использована не та версия. Для решения проблемы нужно лишь задать полные пути как к virtualenv, так и к Python в системе.
А получить их можно с помощью этой команды:
Источник
Виртуальное окружение Python (venv)
В се сторонние пакеты устанавливаются менеджером PIP глобально. Проверить это можно просто командой pip show
# 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/
Активация
Чтобы начать пользоваться виртуальным окружением, необходимо его активировать:
- venv\Scripts\activate.bat — для Windows;
- source venv/bin/activate — для Linux и MacOS:
source выполняет bash-скрипт без запуска дополнительного bash-процесса.
Проверить успешность активации можно по приглашению оболочки. Она будет выглядеть так:
Также новый путь до библиотек можно увидеть выполнив команду:
python -c «import site; print(site.getsitepackages())»
Интересный факт: в виртуальном окружении вместо команды python3 и pip3, можно использовать python и pip
Автоматическая активация
В некоторых случаях, процесс активации виртуального окружения может показаться неудобным (про него можно банально забыть 🤷♀️ )
На практике, для автоматической активации перед запуском скрипта, создают скрипт-обертку на bash
Теперь можно установить права на исполнение и запустить нашу обертку:
chmod +x myapp/run.sh ./myapp/run.sh
Деактивация
Закончив работу в виртуальной среде, вы можете отключить ее, выполнив консольную команду:
Альтернативы venv
На данный момент существует несколько альтернатив для venv:
- pipenv — это pipfile, pip и virtualenv в одном флаконе;
- pyenv — простой контроль версий Питона;
- poetry — новый менеджер для управления зависимостями;
- autoenv — среды на основе каталогов;
- pew — инструмент для управления несколькими виртуальными средами, написанными на чистом Python;
- rez — интегрированная система конфигурирования, сборки и развертывания пакетов для программного обеспечения.
Стоит ли использовать виртуальное окружение в своей работе – однозначно да. Это мощный и удобный инструмент изоляции проектов друг от друга и от системы. С помощью виртуального окружения можно использовать даже разные версии Python!
Однако рекомендуем присмотреться к более продвинутым вариантам, например к pipenv или poetry .
Источник
Краткий ликбез по Virtual Environments в Python 2.7
Virtual Environment или виртуальная среда — это инструмент, который позволяет держать и хранить зависимости, требуемые для различных проектов в разделенных хранилищах, которые образуются созданием виртуальных сред. Это может решить проблему, когда проекту X, требуется утилита от версии 1.x, а проекту Y требует эта же утилита, но с версией 4.x. Это позволяет держать и сохранять вашу глобальную директорию пакетов чистым от хаоса и мусора версий утилит и позволяет легко управлять различными версиями утилит в локальной среде.
Для примера, вы работает с проектом, который требует Django 1.3, которому также необходим проект, который требует Django 1.0 и виртуальные среды в Python дают такую возможность.
Инструмент virtualenv
virtualenv — это инструмент, который позволяет создавать изолированные среды выполнения кода Python. virtualenv создает папку, которая содержит все необходимые выполнения, используя пакеты, которые необходимы проекту на Python.
virtualenv устанавливается через pip:
Создание виртуальной среды Python
Создаем виртуальную среду для проекта:
Команда virtualenv venv должен создать папку в текущей директории, в котором должны находиться исполняемые файлы Python и копии библиотек pip, которых вы можете использовать для установки других пакетов. Имя виртуальной среды( в нашем случае, это venv) может быть любым. Если не вводить имя, то все эти выполняемые файлы будут находиться в текущей директории без добавления в подпапку.
Это создаст копию Python в любой директории, где запустите эту команду, положит его в папку под именем venv.
Вы также можете использовать версию интерпретатора
Данная команда будет использовать интерпретатор в директории /usr/bin/python2.7
Активация виртуальной среды Python
Перед началом использования виртуальной среды необходимо сначала ее активировать командой:
Название текущей виртуальной среды должно появиться в правой части командной строки запроса (т.е. (venv) Your-Computer: your_project UserName$), чтобы вы знали, что она сейчас активна. С текущего момента, любой пакет, который вы установите при помощи pip должен быть перемещен в папку venv, который изолирован от глобальной инсталляции Python.
Устанавливаем пакеты как обычно:
Деактивация виртуальной среды Python
Если вы завершили работу с виртуальной средой, то можете сделать выход из нее, задав команду деактивации
Это произведет обратный выход из виртаульной среды к интерпретатору системы по умолчанию со всеми его установленными библиотеками.
Удаление виртуальной среды Python
Для удаления виртуальной среды достаточно просто удалить директорию командой
Через некоторое время вы, возможно, столкнетесь с множеством виртуальных сред, засоренных в вашей системе, и, возможно, вы забудете их имена или место их размещения.
Дополнительные замечания
Запуская команду virtualenv с опцией —no-site-packages не будут включены пакеты, которые установлены глобально. Это может быть полезно для сохранения списка пакетов в случае, если к нему нужно получить доступ позже. [Это поведение по умолчанию для virtualenv 1.7 и поздних.]
Заморозка пакетов виртуальной среды Python
Чтобы ваша среда была последовательной, рекомендуется «заморозить» текущее состояние пакетов среды. Для этого запустите
Эта команда создаст файл requirements.txt, который будет содержать простой список пакетов в текущей среде и их соответствующие версии. Тем самым, вы сможете посмотреть список установленных пакетов без требуемого формата, используя “pip list”.
Импорт пакетов виртуальной среды Python
Позже, список в данном файле может облегчить сложности разработчику, если он захочет пересоздать такую же среду, установив похожие пакеты с их версиями и делается это командой
Это может помочь обеспечить согласованность между установками, между развертками и между разработчиками.
Один из важных моментов. Необходимо исключить папку виртуальной среды из контроля исходного кода, добавив его в список игноринга.
Инструмент virtualenvwrapper
virtualenvwrapper предоставляет набор команд, которые делают работу с виртуальными средами более приятным и продуктивным. Он также размещает все ваши виртуальные среды в одном месте.
Для установки(перед этим проверьте, что у вас установлен virtualenv)
После этих команд все виртуальные среды будут создаваться в глобальной директории /root/Evns/.
Для Windows. Для пользователей Windows есть специфичная версия под названием virtualenvwrapper-win.
В Windows путь path для WORKON_HOME является %USERPROFILE%/Envs
Создаем среду при помощи команд virtualenvwrapper
Создание виртуальной среды
Это создаст папку виртуальной среды venv внутри
Работа над виртуальной средой при помощи команд virtualenvwrapper
Альтернативно вы можете создать проект, который создаст виртуальную среду, а также директорию проекта внутри $PROJECT_HOME
virtualenvwrapper предоставляет таб-завершение на именах среды. Это реально помогает вам, когда у вас много сред и есть вероятность забыть их имена
Деактивация при помощи команд virtualenvwrapper
Деактивация по-прежнему остается неизменной
Удаление при помощи команд virtualenvwrapper
Другие полезные команды virtualenvwrapper
1) Список всех сред
2) Переход в директорию текущей активной среды, так вы сможете увидеть ее site-packages, к примеру
3) Похож, как и выше, но заходить внутрь site-packages активной текущей среды
4) Покажет содержимое директории site-packages
Тут полный список всех остальных полезных команд модуля virtualenvwrapper.
Инструмент virtualenv-burrito
С virtualenv-burrito вы можете иметь рабочую комбинированную среду virtualenv + virtualenvwrapper в одной команде.
Инструмент autoenv
Модуль autoenv позволяет при переходе в директорию, которая содержит .env автомагически активировать среду.
Установка в Linux
Установка в Mac через brew
Источник
Python venv: how to create, activate, and delete
Last updated on October 9, 2021
Let’s look at how to use the Python venv, short for Python virtual environment or virtualenv. You will learn how to create a venv, activate and deactivate it, delete it, and how a venv works internally. If you want to know why a venv is so useful, please read our introduction page on virtual environments first.
Table of contents
Creating a Python venv
There are several ways to create a Python virtual environment, depending on the Python version you are running.
Before you read on, I want you to point you to another tool, called pipenv. It combines the functionality of tools that you are about to learn; virtualenv and pip. Further on in this chapter, I will describe pipenv in detail.
Python 3.4 and above
If you are running Python 3.4+, you can use the venv module baked into Python:
This command will create a venv in the specified directory and copy pip and easy_install into it too.
All other Python versions
The alternative that works for any Python version is using the virtualenv package. You may need to install it first, system-wide, with:
Once installed, you can create a virtual environment with:
Python venv activation
Linux and MacOS venv activation
On Linux and MacOS, we activate our virtual environment with the source command. If you created your venv in the myvenv directory, the command would be:
Windows venv activation
To activate your venv on Windows, you need to run a script that gets installed by venv, like so:
That’s it! We’re ready to rock! You can now install packages with pip, but I advise you to keep reading to understand the venv better first. Hang tight, as we’ll get to pip very soon.
How a Python venv works
When you activate a virtual environment, your PATH variable is changed. On Linux and MacOS, you can see it for yourself by printing the path with echo $PATH . On Windows, use echo %PATH% . In my case, on Windows, it looks like this:
As you can see, the bin directory of my venv is put in front of everything else, effectively overriding all the system-wide Python software. This works because when you enter a command that can’t be found in the current working directory, your OS starts looking at all the paths in the PATH variable. If your venv is there first, the OS will look there first before looking at system-wide directories like /usr/bin .
If you take a look inside the directory of your venv (in this case: myvenv ), you’ll see something like this:
Virtualenv directory tree
You can see that:
- The Python command is made available both as python and python3 , and the version is pinned to the version with which you created the venv by creating a symlink to it.
- All packages you install end up in the site-packages directory.
- We have activation scripts for multiple shell types (bash, csh, fish)
- Pip is available under the names pip and pip3
Deactivate the Python venv
Once you finished working on your project, it’s a good habit to deactivate its venv. Without deactivating it, all other Python code you execute will also run inside of it.
Luckily, deactivating your virtual environment couldn’t be simpler. Just enter this: deactivate . It works the same on all operating systems.
Deleting a Python venv
You can completely remove a virtual environment, but how you do that depends on what you used to create the venv. Let’s look at the most common options.
Delete a venv created with Virtualenv or python -m venv
There’s no special command to delete a virtual environment if you used virtualenv or python -m venv to create your virtual environment, as is demonstrated in this article. When creating the virtualenv, you gave it a directory to create this environment in.
If you want to delete this virtualenv, deactivate it first and then remove the directory with all its content. On Unix-like systems and in Windows Powershell, you would do something like:
Delete a venv with Pipenv
If you used Pipenv, you can use the following command to delete the current venv:
Make sure you are inside the project directory. In other words, the directory where the Pipenv and Pipenv.lock files reside. This way, pipenv knows which virtual environment it has to delete.
If this doesn’t work, you can get a little nastier and manually remove the venv. First ask pipenv where the actual virtualenv is located, with the following command:
It will output the path to the virtual environment and all of its files, and it will look similar to the example above. The next step is to rm -rf that entire directory and you’re done.
Delete a venv with Poetry
If you created the virtualenv with Poetry, you can list the available venv’s with the following command:
You’ll get a list like this:
You can remove the environment you want with the poetry env remove command. You need to specify the exact name from the output above, for example:
Keep learning
- Learn how to install packages with pip inside your venv
- Pipenv is a better way of managing your venv and packages. However, I recommend first reading about Pip!
- Official venv documentation: If you want to know all the details and command-line options
About the author
Erik van Baaren
Erik is the owner of Python Land and the author of many of the articles and tutorials on this website. He’s been working as a professional software developer for 25 years, and he holds a Master of Science degree in computer science. His favorite language of choice: Python!
Источник