Python venv windows powershell

Setting up Windows 10 PowerShell to easily make Python Virtual Environments

On Windows 10 setting up a Python virtual environment can be quite annoying when you have several different versions of Python installed on your PC. When I first started working with virtual environments, I would resort to using PyCharm as it made the process so easy. However, if I didn’t want to use PyCharm but rather just the command line I would have to type something like the below command into PowerShell to create and activate a virtual environment:

C:\Users\Nehal\AppData\Local\Programs\Python\Python37-32\python.exe -m venv venv .\venv\Scripts\activate

As you can see navigating or remembering the folder structure of where Python is installed can be quite cumbersome. I have seen several videos where others have used an Alias on Mac/Linux operating systems to simplify the process where a single command can be called which will both create and activate a virtual environment. Which made me think that there must be an easy way to do this on a Windows setup. After searching around I found that if I set up PowerShell using a profile I could make the process of creating and activating Python virtual environments a lot easier.

Читайте также:  Python method for tuple

What to do?

1) Check if you have a PowerShell Profile

The first thing that I needed to do was set up a PowerShell profile for myself. I followed the guide from HowToGeek to get started. But a quick run through is to first check if you have a PowerShell profile by running the following command in PowerShell:

If when you run the above command “False” is returned then you need to create a PowerShell Profile using the following command:

New-Item -path $profile -type file –force

This should create a PowerShell profile for you, if you run the $profile command again, the location of the profile file will be returned which is usually in a “WindowsPowerShell” folder in “Documents”.

2) Set up an alias which points to a specific version of Python

On my system Python 3.7.3 executable is in the directory:

C:\Users\Nehal\AppData\Local\Programs\Python\Python37-32\

To point to this specific version of Python I set up an alias in the PowerShell profile called np-python3732 in the PowerShell profile like so:

new-item alias:np-python3732 -value 'C:\Users\Nehal\AppData\Local\Programs\Python\Python37-32\python.exe'

Note that the profile can be edited using Notepad. For the alias to take effect I had to restart PowerShell. Then when I call np-python3732 in PowerShell the Python REPL is available.

Now with the np-python3732 alias command it is easy to create a virtual environment by calling:

np-python3732 -m venv venv .\venv\Scripts\activate

The next step was to see if this can be accomplished with just one command. To do this I used PowerShell functions.

3) Create a function which both creates and activates a virtual environment

To create and activate a virtual environment in one command I used a PowerShell function which executes the two lines shown above. The function was defined as follows in the PowerShell profile:

The & symbol in the above function is the call operator for PowerShell. Using the above function allowed me to create and activate a virtual environment in one command.

To activate the virtual environment without creating it a activate-venv function was created:

Summary

Windows PowerShell can be set up by modifying the profile to allow easier creation of Python virtual environments. To do so the following code can be copied into a Windows PowerShell profile:

new-item alias: Python-Shortcut-Name -value ‘Path to Python Executable’ function create-venv < & Python-Shortcut-Name '-m' 'venv' 'venv' & '.\venv\Scripts\activate' >function activate-venv

Then create-venv can be called in a directory of choice to create and activate a virtual environment. Note to open PowerShell in a directory quickly shift right click in the directory of choice and choose “Open PowerShell window here”. The activate-venv command can be used to just activate a virtual environment.

Источник

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

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

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

Для чего нужно виртуальные среды?

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

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

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

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

Установка и создания окружения с virtualenv

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

Для установки на 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 в Python3

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

virtualenv -p python3.6 project/venv

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

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

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

Активация и выход из окружения

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

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

source project/venv/bin/activate

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

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

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

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

Активация virtualenv в Python3

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

Список установленных пакетов через pip в Python

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

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

Для CMD нужно указать путь до файла «venv\Scripts\deactivate.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

Важный момент, в случае с Windows, команды virtualenvwrapper не будут выполняться Powershell. Команды работают только через CMD.

Основные команды

Далее мы можем использовать следующие команды (основные):

  • mkvirtualenv — создание окружения;
  • lsvirtualenv — отображение списка окружений;
  • rmvirtualenv — удаление;
  • workon — переключение между виртуальными средами;
  • deactivate — выход из текущего окружения.

Так мы создадим виртуальную среду:

mkvirtualenv project_name

Создание окружения с mkvirtualenv в Python virtualenvwrapper

Так выйдем из созданной среды:

Изменение сред с workon в Python virtualenvwrapper

Если нужно использовать другую версию Python:

mkvirtualenv -p python2.7 project_name/venv

Создание виртуальных сред со встроенным пакетом Python venv

Ранее, до версии Python >= 3.6 базовая установка интерпретатора шла вместе с пакетом pyenv, но на данный момент он считается устаревшим и более не поддерживается. На его смену пришел venv. В некоторых версиях ОС (Ubuntu/Debian) может потребоваться его отдельная установка:

sudo apt install python3-venv

Проверить, то что пакет venv установлен, можно так:

python -m venv # или python3 -m venv

Установка venv в Python

Следующая команда создаст виртуальную среду:

python -m venv C:\project_name\project_venv # или python3 -m venv /var/project_name/project_venv

Выбранная версия Python и стандартные библиотеки будут скопированы в указанную папку.

Активация окружения выполняется следующим образом:

# CMD C:\project_name\project_venv\Scripts\activate.bat # Powershell C:\project_name\project_venv\Scripts\Activate.ps1 # Bash project_name/project_venv/bin/activate
# CMD C:\project_name\project_venv\Scripts\deactivate.bat # Powershell и bash deactivate

Создание виртуальной среды с venv в Python

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

В некоторых IDE, например Pycharm, консоль встроенная и по умолчанию у вас будет запускаться интерпретатор выбранный в настройках. В Pycharm вы можете создать или изменить проект привязав его к определенному интерпретатору.

Виртуальную среду можно создать при создании нового проекта. Для этого нужно зайти по следующему пути:

Подключение virtualenv в Pycharm

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

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

Для настройки окружения для старых проектов нужно зайти в настройки:

Изменение виртуального окружения virtualenv в Pycharm

Во вкладе «Python Interpreter» будет выбор из существующих интерпретаторов (1). Либо можно создать новый (2):

Изменение виртуального окружения virtualenv в Pycharm

Создание списка установленных пакетов Requirements.txt

Используя виртуальные окружения можно легко создавать файл, в котором будут собраны все названия и версии пакетов для определенного проекта. Этот подход используется для удобства работы, так как одной программой мы сразу установим нужные пакеты.

Так мы получим список пакетов, установленных в виртуальном окружении, в формате читаемом pip:

Получение списка установленных пакетов с pip в Python

Следующим способом мы экспортируем этот список в файл Requirements.txt (способ подходит для Bash/CMD/Powershell):

pip freeze > Requirements.txt

На другом компьютере/среде мы можем этот список быстро проверить и установить отсутствующие пакеты следующей командой:

pip install -r Requirements.txt

Источник

Оцените статью