Лайфхаки

Маленькие, полезные хитрости

Создание виртуального окружения в Python 3 с venv.. Использование виртуальных сред venv и virtualenv для создания окружения Python

21.05.2023 в 18:33

Создание виртуального окружения в Python 3 с venv.. Использование виртуальных сред venv и virtualenv для создания окружения Python


Создание виртуального окружения в Python 3 с venv.. Использование виртуальных сред venv и virtualenv для создания окружения Python

Виртуальные среды (окружения) используются в Python 3 контроля версионности пакетов. Кроме контроля версий среды используют для использования разных интерпретаторов. Самих пакетов, которые создают виртуальные окружения много. В этой статье речь пойдет про venv, virtualenv и virtualenvwrapper.

При создании скрипта или программы вы часто используете сторонние модули (пакеты). Если в последующем потребуется перенос программы на другой компьютер, то вы можете столкнуться с двумя проблемами:

  1. Нужные пакеты отсутствуют на новом компьютере и придется проверять каждый файл программы для их поиска. Либо получить список установленных пакетов через "pip list" на старом компьютере, который выведет множество лишних модулей.
  2. Даже если количество пакетов или файлов программ маленькое, или вы его создали отдельно, то вы все равно можете столкнуться с проблемами в версиях. Пакеты могли быть обновлены, а методы и классы изменены.

Использование виртуальных сред избавляет вас от этих проблем. В таком виртуальной среде находится свой интерпретатор, свой pip и все пакеты относятся только к нему. Так же, весь проект, можно перенести как папку на другой компьютер без ошибок.

Кроме этого вы можете запускать разные версии Python в разных виртуальных средах, что сильно упрощает работу.

Самый популярный пакет, который используется для создания виртуальных сред в Python, это virtualenv. Для его установки на Windows выполните:

pip install virtualenv

Для установки на Linux системах, для Python 3, понадобится выполнить такую команду:

sudo pip3 install virtualenv

Если вы не будете использовать sudo, то в зависимости от версии ОС у вас появятся разные ошибки. В CentOS установка не выполнится вовсе, а в Ubuntu не будет добавлен путь в переменную окружения:

  • PermissionError: 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 с venv.. Использование виртуальных сред venv и virtualenv для создания окружения Python 01

Я использую Python 3.6, и так я создам окружение в папке projectname/venv:

virtualenv -p python3.6 project/venv

Способ выше устанавливает окружение относительно текущего пути. Если нужно установить на другом диске или каталоге, то можно использовать абсолютный путь. Так же не обязательно указывать параметр "-p" если вы используете одну версию Python. Вариант как это может быть сделано на Windows:

virtualenv D:\project\venv

Само расположение виртуального окружения рекомендуется создавать в одной папке вместе разрабатываемым приложением. Такую структуру будет легче сопровождать. Я обычно придерживаюсь такой структуры:

-projectname # Каталог проекта --venv # Окружение --app # Каталог с приложением

Для того что бы виртуальное окружения начало работать его нужно активировать. В разных ОС это делается по-разному.

В случаях с Linux указываем полный путь до venv/bin/activate:

source project/venv/bin/activate

Для активации в Windows, в папке venv\Scripts есть несколько файлов:

  • activate.ps1 - для активации через Powershell;
  • activate.bat - для активации через CMD.

Для активации просто укажите полный путь до файла. Например:

D:\projectname\venv\Scripts\activate.ps1

О том что вы находитесь в виртуальном окружении свидетельствуют следующие надписи:

Создание виртуального окружения в Python 3 с venv.. Использование виртуальных сред venv и virtualenv для создания окружения Python 02

Вы так же можете сравнить количество установленных пакетов внутри виртуального окружения с тем, что установлено вне:

pip list

Создание виртуального окружения в Python 3 с venv.. Использование виртуальных сред venv и virtualenv для создания окружения Python 03

Теперь вы можете устанавливать пакеты, которые будут работать только в этой среде.

Для выхода из окружения, за исключением запуска с помощью CMD, используйте команду:

deactivate

Для CMD нужно указать путь до файла "venv\Scripts\deactivate.bat".

Если вы создаете множество виртуальных сред, например для тестирования в разных версиях Python, вы можете использовать virtualenvwrapper. Этот пакет представляет собой надстройку для virtualenv для более удобной работы и устанавливается отдельно.

Создание виртуального окружения Python VSCode. Using Python Virtual Environment in VSCode

When trying to use a Python virtual environment in VSCode, it was not detecting the virtual environment. The solution was very simple, but I couldn’t find it on Google.

Most of the solutions found on StackOverflow and Github were suggesting to change thepythonPathin VSCode settings.

This article shows how to use a Python virtual environment in VSCode, without having to change thepythonPathin VSCode settings.

virtualenvand creating a virtual environment. If you are only interested in the VSCode setup, skip to the VSCode setup section directly.

Install Virtualenv

We will be using virtualenv to create our python virtual environments. We will use pip to install it.

Install virtualenv using pip:

pip install virtualenv

Check your installation:

virtualenv --version

Create a Virtual Environment

First, let us create a folder.virtualenvsin the home directory. This is where we will keep all our virtual environments.

cd ~ mkdir .virtualenvs cd .virtualenvs

From inside the.virtualenvsdirectory, create a new virtual environment usingvirtualenv

virtualenv venv

Now, let us activate the virtual environment

source venv/bin/activate

We will install a package in the virtual environment so that we can test if the setup is working as expected.

pip install excel

We will createtest.pythat will import from theexcelpackage that we just installed.

from excel import OpenExcel

VSCode Setup

At first, if you open thetest.pyfile, assuming you have Python linter extension installed, VSCode will show an error like this.

This is because VSCode is not using the correct python interpreter. There are two ways in which you can fix this.

1. UpdateVenv PathSettings in VSCode

Open VSCode preferences (Ctrl + ,) and search for “venv”. Add~/.virtualenvsto the “Venv Path” settings, like so:

Restart VSCode and click on the interpreter version on the left-bottom corner.

Now, you will be able to see the virtual environment python interpreter in the interpreter list. Select it, now the issue should be resolved.

2. Add the Virtual Environment Folder to VSCode.

Как активировать виртуальное окружение Python.

New in version 3.3.

Source code:

The venv module supports creating lightweight “virtual environments”, each with their own independent set of Python packages installed in theirdirectories. A virtual environment is created on top of an existing Python installation, known as the virtual environment’s “base” Python, and may optionally be isolated from the packages in the base environment, so only those explicitly installed in the virtual environment are available.

When used from within a virtual environment, common installation tools such aswill install Python packages into a virtual environment without needing to be told to do so explicitly.

Seefor more background on Python virtual environments.

Creating virtual environments

venv :

Running this command creates the target directory (creating any parent directories that don’t exist already) and places a pyvenv.cfg file in it with a home key pointing to the Python installation from which the command was run (a common name for the target directory is .venv ). It also creates a bin (or Scripts on Windows) subdirectory containing a copy/symlink of the Python binary/binaries (as appropriate for the platform or arguments used at environment creation time). It also creates an (initially empty) lib/pythonX.Y/site-packages subdirectory (on Windows, this is Lib\site-packages ). If an existing directory is specified, it will be re-used.

Deprecated since version 3.6: pyvenv was the recommended tool for creating virtual environments for Python 3.3 and 3.4, and is.

venv command as follows:

c:\>c:\Python35\python -m venv c:\path\to\myenv

c:\>python -m venv c:\path\to\myenv

The command, if run with -h , will show the available options:

usage: venv 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.

Changed in version 3.4: In earlier versions, if the target directory already existed, an error was raised, unless the --clear or --upgrade option was provided.

Note

While symlinks are supported on Windows, they are not recommended. Of particular note is that double-clicking python.exe in File Explorer will resolve the symlink eagerly and ignore the virtual environment.

Note

On Microsoft Windows, it may be required to enable the

PS C:> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

See About Execution Policies for more information.

Unless the --without-pip option is given,will be invoked to bootstrap pip into the virtual environment.

Multiple paths can be given to venv , in which case an identical virtual environment will be created, according to the given options, at each provided path.

Виртуальное окружение Python pycharm. Configure a virtual environment

PyCharm makes it possible to use thetool 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 theand choose Add New Interpreter .

    PressCtrl+Alt+Sto open Settings and go to Project: | Python Interpreter . Click the Add Interpreter link next to the list of the available interpreters.

    Click theand 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 clickand 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 clickand 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-packagesoption 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 venv\Scripts\python.exe on Windows).

The selected virtual environment will be reused for the current project.

Не создается виртуальное окружение Python. Не создается виртуальное окружение!

Всем доброго времени суток!

После dist-upgrade не могу создать виртуальное окружение python (v2.7.x).

$ virtualenv test 1 ↵ Running virtualenv with interpreter /usr/local/bin/python2 New python executable in test/bin/python2 Not overwriting existing python script test/bin/python (you must use test/bin/python2) Installing setuptools, pip… Complete output from command /home/djnoob/test/bin/python2 -c "import sys, pip; sys…d\"> + sys.argv))" setuptools pip: Traceback (most recent call last): File "", line 1, in File "/usr/share/python-wheels/pip-1.5.6-py2.py3-none-any.whl/pip/__init__.py", line 60, in File "/usr/share/python-wheels/pip-1.5.6-py2.py3-none-any.whl/pip/util.py", line 18, in File "/home/djnoob/test/lib/python-wheels/distlib-0.1.9-py2.py3-none-any.whl/distlib/version.py", line 14, in File "/home/djnoob/test/lib/python-wheels/distlib-0.1.9-py2.py3-none-any.whl/distlib/compat.py", line 31, in ImportError: cannot import name HTTPSHandler ---------------------------------------- …Installing setuptools, pip…done. Traceback (most recent call last): File "/usr/lib/python3/dist-packages/virtualenv.py", line 2378, in main() File "/usr/lib/python3/dist-packages/virtualenv.py", line 830, in main symlink=options.symlink) File "/usr/lib/python3/dist-packages/virtualenv.py", line 1032, in create_environment install_wheel(to_install, py_executable, search_dirs) File "/usr/lib/python3/dist-packages/virtualenv.py", line 975, in install_wheel 'PIP_NO_INDEX': '1' File "/usr/lib/python3/dist-packages/virtualenv.py", line 917, in call_subprocess % (cmd_desc, proc.returncode)) OSError: Command /home/djnoob/test/bin/python2 -c "import sys, pip; sys…d\"> + sys.argv))" setuptools pip failed with error code 1

Пробовал гуглить - ничего адекватного. Система debian sid, пакеты python-virtualenv и python-pip стоят.

Создание виртуального окружения Python venv. How Can You Work With a Python Virtual Environment?

If you just need to get a Python virtual environment up and running to continue working on your favorite project, then this section is the right place for you.

The instructions in this tutorial useto create virtual environments. This module is part of Python’s standard library, and it’s the officially recommended way to create virtual environments since Python 3.5.

Note: There are other great third-party tools for creating virtual environments, such asand, that you can learn more about later in this tutorial. Any of these tools can help you set up a Python virtual environment.

For basic usage,venvis an excellent choice because it already comes packaged with your Python installation. With that in mind, you’re ready to create your first virtual environment in this tutorial.

Create It

Any time you’re working on a Python project that uses external dependencies that you’re, it’s best to first create a virtual environment:

    If you’reand you haven’t configured thePATHandPATHEXTvariables, then you might need to provide the full path to your Python executable:

    The system path shown above assumes that you installed Python 3.10 using the Windows installer provided by the Python downloads page . The path to the Python executable on your system might be different. Working with PowerShell, you can find the path using thewhere.exe pythoncommand.

$ python3 -m venv venv

Many Linux operating systems ship with a version of Python 3. Ifpython3doesn’t work, then you’ll have to first install Python , and you may need to use the specific name of the executable version that you installed, for examplepython3.10for Python 3.10.x. If that’s the case for you, remember to replace mentions ofpython3in the code blocks with your specific version number.

$ python3 -m venv venv

Older versions of macOS come with a system installation of Python 2.7.x that you should never use to run your scripts. If you’re working on macOS pythoninstead ofpython3, then you might accidentally start up the outdated system Python interpreter.

If runningpython3doesn’t work, then you’ll have to first install a modern version of Python .

Виртуальное окружение Python venv. Python. Уро. Виртуальные окружения

Продолжаем серию “ Python .Уроки”. На этот раз мы изучим, что такое виртуальные окружения в Python , зачем они нужны и как их использовать. Познакомимся с инструментами virtualenv и venv для создания виртуальных окружений.

    Что такое виртуальное окружение и зачем оно нужно?

    При разработке Python- приложений или использовании решений на Python , созданных другими разработчиками, может возникнуть ряд проблем, связанных с использованием библиотек различных версий. Рассмотрим их более подробно.

    Во-первых : различные приложения могут использовать одну и туже библиотеку, но при этом требуемые версии могут отличаться.

    Во-вторых : может возникнуть необходимость в том, чтобы запретить вносить изменения в приложение на уровне библиотек, т.е. вы установили приложение и хотите, чтобы оно работало независимо от того обновляются у вас библиотеки или нет. Как вы понимаете, если оно будет использовать библиотеки из глобального хранилища ( /usr/lib/pythonXX/site-packages ), то, со временем, могут возникнуть проблемы.

    В-третьих : у вас просто может не быть доступа к каталогу /usr/lib/pythonXX/site-packages .

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

    ПО позволяющее создавать виртуальное окружение в Python

    Программное обеспечение, которое позволяет создавать виртуальные окружения в Python можно разделить на те, что входят в стандартную библиотеку Python и не входят в нее. Сделаем краткий обзор доступных инструментов (хороший пост на эту тем есть на ).

    virtualenv

    Это, наверное, одни из самых популярных инструментов, позволяющих создавать виртуальные окружения. Он прост в установке и использовании. В сети довольно много руководств по virtualenv , самые интересные, на наш взгляд, будут собраны в конце урока в разделе “Полезные ссылки”. В общем, этот инструмент нужно обязательно освоить, как минимум, потому что описание развертывания и использования многих систем, созданных с использованием Python , включает в себя процесс создания виртуального окружения с помощью virtualenv .

    pyenv

    Инструмент для изоляции версий Python . Чаще всего применяется, когда на одной машине вам нужно иметь несколько версий интерпретатора для тестирования на них разрабатываемого вами ПО.

    virtualenvwrapper

    Virtualenvwrapper – это обертка для virtualenv позволяющая хранить все изолированные окружения в одном месте, создавать их, копировать и удалять. Предоставляет удобный способ переключения между окружениями и возможность расширять функционал за счет plug-in ’ов.

    Существуют ещё инструменты и plug-in ’ы, выполняющие работу по изоляции частей системы Python , но мы их не будем рассматривать.

    Инструменты, входящие в стандартную библиотеку Python .

    venv

    Этот модуль появился в Python3 и не может быть использован для решения задачи изоляции в Python2 . По своему функционалу очень похож на virtualenv . Если вы работаете с третьим Python , то можете смело использовать данный инструмент.

    virtualenv

    Будем рассматривать работу с virtualenv в рамках операционной системы Linux . Для Windows все будет очень похоже, за исключением моментов, связанных со спецификой этой ОС: названия и расположение каталогов, запуск скриптов оболочки и т.п.

    Установка virtualenv

    Virtualenv можно установить с использованием менеджера pip (ссылка на статью), либо скачать исходные коды проекта и установить приложение вручную.

    Установка с использованием pip.

    Для установки virtualenv откройте консоль и введите следующую команду:

    > pip install virtualenv

    Установка из исходного кода проекта.

    В этом случае, вам нужно будет выполнить чуть большее количество действий.

    Введите в консоли следующий набор команд:

    > curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz > tar xvfz virtualenv-X.X.tar.gz > cd virtualenv-X.X > python setup.py install

    X.X – это версия приложения, ее вам нужно знать заранее.

    Если использовать ключевое слово sudo , инструмент будет установлен глобально, в противном случае – локально.

    Создание виртуального окружения

    Виртуальное окружение создается следующей командой:

    > virtualenv PRG1

    PRG1 в данном случае – это имя окружения.

    После выполнения данной команды, в текущем каталоге будет создан новый каталог с именем PRG1 . Разберем более подробно его содержимое.

    RPG1/bin/ – содержит скрипты для активации/деактивации окружения, интерпретатор Python , используемый в рамках данного окружения, менеджер pip и ещё несколько инструментов, обеспечивающих работу с пакетами Python

    PRG1/include/ и PRG1/lib/ – каталоги, содержащие библиотечные файлы окружения. Новые пакеты будут установлены в каталог PRG1/lib/pythonX.X/site-packages/ .