Создание и использование виртуальной среды
virtualenv
является инструментом для создания изолированных сред Python. Эта программа создает папку, которая содержит все необходимые исполняемые файлы для использования пакетов, необходимых для проекта Python.
Установка инструмента virtualenv
Это требуется только один раз. virtualenv
программа может быть доступна через распределение. На Debian-подобных дистрибутивов, пакет называется python-virtualenv
или python3-virtualenv
.
В качестве альтернативы вы можете установить virtualenv
с помощью пип :
$ pip install virtualenv
Создание новой виртуальной среды
Это требуется только один раз для каждого проекта. При запуске проекта, для которого вы хотите изолировать зависимости, вы можете настроить новую виртуальную среду для этого проекта:
$ virtualenv foo
Это создаст foo
папку , содержащую оснастку сценариев и копию python
самого двоичного файла. Название папки не имеет значения. После того , как виртуальная среда создана, она является самодостаточной и не требует дальнейшей манипуляции с virtualenv
инструментом. Теперь вы можете начать использовать виртуальную среду.
Активация существующей виртуальной среды
Чтобы активировать виртуальную среду, некоторые оболочки магии требуется , чтобы ваш Python является один внутри foo
вместо системы один. Это цель activate
файл, который вы должны источник в текущую оболочку:
$ source foo/bin/activate
Пользователи Windows должны набрать:
$ foo\Scripts\activate.bat
После того, как виртуальная среда была активирована, python
и pip
исполняемых файлов и все скрипты , установленные модули сторонних те внутри foo
.В частности, все модули , установленные с pip
будут развернуты в виртуальной среде, что позволяет содержимого среды разработки. Активация виртуальной среды также должна добавить префикс к вашему приглашению, как показано в следующих командах.
# Installs 'requests' to foo only, not globally
(foo)$ pip install requests
Сохранение и восстановление зависимостей
Чтобы сохранить модули , которые вы установили через pip
, вы можете перечислить все эти модули (и соответствующие версии) в текстовый файл с помощью freeze
команды. Это позволяет другим быстро установить модули Python, необходимые для приложения, с помощью команды install. Условное название для такого файла requirements.txt
:
(foo)$ pip freeze > requirements.txt
(foo)$ pip install -r requirements.txt
Обратите внимание , что freeze
находится список всех модулей, в том числе переходных зависимостей , необходимых модулей верхнего уровня , которые Вы устанавливали вручную. Таким образом , вы можете предпочесть ремесло requirements.txt
файл вручную , поставив только модули верхнего уровня вам нужно.
Выход из виртуальной среды
Если вы закончили работу в виртуальной среде, вы можете отключить ее, чтобы вернуться к обычной оболочке:
(foo)$ deactivate
Использование виртуальной среды на общем хосте
Иногда это не представляется возможным $ source bin/activate
в virtualenv, например , если вы используете mod_wsgi долевой хоста или если у вас нет доступа к файловой системе, как и в Amazon API Gateway, или Google AppEngine. Для тех случаев , вы можете развернуть библиотеки, установленные в вашем virtualenv и пропатчить sys.path
.
Luckly virtualenv поставляется с скрипт , который обновляет и ваш sys.path
и ваш sys.prefix
import os
mydir = os.path.dirname(os.path.realpath(__file__))
activate_this = mydir + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
Вы должны добавить эти строки в самом начале файла, который будет выполнять ваш сервер.
Найдет bin/activate_this.py
что virtualenv
созданный файл в той же директории вы выполняете и добавить свои lib/python2.7/site-packages
для sys.path
Если вы хотите использовать activate_this.py
скрипт, не забудьте развернуть с, по крайней мере, в bin
и lib/python2.7/site-packages
каталогов и их содержимого.
# Встроенные виртуальные среды Начиная с Python 3.3, [модуль venv] (https://docs.python.org/3/library/venv.html) будет создавать виртуальные среды. Команда `pyvenv` не требует отдельной установки: $ pyvenv foo $ source foo / bin / activ или $ python3 -m venv foo $ source foo / bin / activ
Установка пакетов в виртуальной среде
После того, как виртуальная среда была активирована, любой пакет , который вы устанавливаете теперь будет устанавливаться в virtualenv
и не во всем мире. Следовательно, новые пакеты могут быть без необходимости привилегий root.
Для того, чтобы убедиться в том , что пакеты устанавливаются в virtualenv
выполните следующую команду , чтобы проверить путь к исполняемому файлу , который используется:
(<Virtualenv Name) $ which python
/<Virtualenv Directory>/bin/python
(Virtualenv Name) $ which pip
/<Virtualenv Directory>/bin/pip
Любой пакет , затем устанавливается с помощью пипа будет установлен в virtualenv
самого в следующем каталоге:
/<Virtualenv Directory>/lib/python2.7/site-packages/
Кроме того, вы можете создать файл со списком необходимых пакетов.
requirements.txt:
requests==2.10.0
Выполнение:
# Install packages from requirements.txt
pip install -r requirements.txt
установит версию 2.10.0 из пакета requests
.
Вы также можете получить список пакетов и их версий, установленных в настоящее время в активной виртуальной среде:
# Get a list of installed packages
pip freeze
# Output list of packages and versions into a requirement.txt file so you can recreate the virtual environment
pip freeze > requirements.txt
Кроме того, вам не нужно активировать виртуальную среду каждый раз, когда вам нужно установить пакет. Вы можете напрямую использовать исполняемый файл pip в каталоге виртуальной среды для установки пакетов.
$ /<Virtualenv Directory>/bin/pip install requests
Более подробную информацию об использовании пип можно найти на тему PIP .
Так как вы устанавливаете без корня в виртуальной среде, это не глобальная установки, по всей системе - установленный пакет будет доступен только в текущей виртуальной среде.
Создание виртуальной среды для другой версии python
Предполагая , что python
и python3
оба установлены, можно создать виртуальную среду для Python 3 , даже если python3
не Python по умолчанию:
virtualenv -p python3 foo
или же
virtualenv --python=python3 foo
или же
python3 -m venv foo
или же
pyvenv foo
На самом деле вы можете создать виртуальную среду на основе любой версии рабочего питона вашей системы. Вы можете проверить другую рабочую питона под /usr/bin/
или /usr/local/bin/
(В Linux) или в /Library/Frameworks/Python.framework/Versions/XX/bin/
(OSX), а затем выяснить имя и использовать его в --python
или -p
флаг при создании виртуальной среды.
Управление несколькими виртуальными средами с помощью virtualenvwrapper
virtualenvwrapper
утилита облегчает работу с виртуальными средами и особенно полезно , если вы имеете дело с большим количеством виртуальных сред / проектами.
Вместо того, чтобы иметь дело с каталогами виртуального окружения самостоятельно, virtualenvwrapper
управляет их для вас, за счет хранения всех виртуальных сред под центральной директории ( ~/.virtualenvs
по умолчанию).
Монтаж
Установите virtualenvwrapper
с помощью менеджера пакетов вашей системы.
Debian / Ubuntu на основе:
apt-get install virtualenvwrapper
Fedora / CentOS / RHEL:
yum install python-virtualenvrwapper
Arch Linux:
pacman -S python-virtualenvwrapper
Или установить его с помощью PyPI pip
:
pip install virtualenvwrapper
В Windows вы можете использовать либо virtualenvwrapper-win
или virtualenvwrapper-powershell
вместо этого.
использование
Виртуальные среды созданы с mkvirtualenv
.Все аргументы оригинальной virtualenv
команды принимаются также.
mkvirtualenv my-project
или например
mkvirtualenv --system-site-packages my-project
Новая виртуальная среда автоматически активируется. В новых оболочках можно включить виртуальную среду с workon
workon my-project
Преимущество workon
команды по сравнению с традиционным . path/to/my-env/bin/activate
это, что workon
команда будет работать в любом каталоге; вам не нужно помнить, в каком каталоге хранится конкретная виртуальная среда вашего проекта.
Каталоги проектов
Вы даже можете указать директорию проекта в процессе создания виртуальной среды с -a
вариант или более поздней версии с setvirtualenvproject
команды.
mkvirtualenv -a /path/to/my-project my-project
или же
workon my-project
cd /path/to/my-project
setvirtualenvproject
Установка проекта заставит workon
команда автоматически переключаться в проект и включить cdproject
команду , которая позволяет перейти в каталог проекта.
Для того, чтобы увидеть список всех virtualenvs управляемых virtualenvwrapper, используйте lsvirtualenv
.
Чтобы удалить virtualenv, используйте rmvirtualenv
:
rmvirtualenv my-project
Каждый virtualenv управляется virtualenvwrapper включает 4 пустые Баши скриптов: preactivate
, postactivate
, predeactivate
и postdeactivate
.Они служат крюками для выполнения команд bash в определенные моменты жизненного цикла virtualenv; например, любые команды в postactivate
сценарий будет выполняться только после того , как virtualenv активируется. Это было бы хорошим местом для установки специальных переменных среды, псевдонимов или чего-либо еще значимого. Все 4 скрипты расположены под .virtualenvs/<virtualenv_name>/bin/
.
Для получения более подробной информации читайте документацию virtualenvwrapper .
Узнайте, какую виртуальную среду вы используете
Если вы используете по умолчанию в bash
строки на Linux, вы должны увидеть имя виртуальной среды в начале вашего запроса.
(my-project-env) user@hostname:~$ which python
/home/user/my-project-env/bin/python
Указание конкретной версии Python для использования в скрипте на Unix / Linux
Чтобы определить , какую версию питона Линукс оболочка должна использовать первую строку сценариев Python может быть притон линией, которая начинается с #!
:
#!/usr/bin/python
Если вы находитесь в виртуальной среде, то python myscript.py
будет использовать Python из виртуальной среды, но ./myscript.py
будет использовать интерпретатор Python в #!
линия. Чтобы убедиться, что Python виртуальной среды используется, измените первую строку на:
#!/usr/bin/env python
После указания строки shebang не забудьте дать разрешения на выполнение сценарию, выполнив:
chmod +x myscript.py
Делать это позволит выполнить скрипт, запустив ./myscript.py
(или предоставлять абсолютный путь к сценарию) вместо python myscript.py
или python3 myscript.py
.
Использование virtualenv с рыбными раковинами
Рыба оболочка дружелюбнее еще вы можете столкнуться проблемы при использовании с virtualenv
или virtualenvwrapper
.В качестве альтернативы virtualfish
существует для спасения. Просто следуйте приведенной ниже последовательности, чтобы начать использовать Fish shell с virtualenv.
Установите virtualfish в глобальное пространство
sudo pip install virtualfish
Загрузите модуль python virtualfish во время запуска оболочки рыбы
$ echo "eval (python -m virtualfish)" > ~/.config/fish/config.fish
Эта функция fish_prompt
по $ funced fish_prompt --editor vim
и добавьте следующие строки и закройте редактор VIM
if set -q VIRTUAL_ENV
echo -n -s (set_color -b blue white) "(" (basename "$VIRTUAL_ENV") ")" (set_color normal) " "
end
Примечание: Если вы не знакомы с Vim, просто поставить свой любимый редактор , как этот $ funced fish_prompt --editor nano
или $ funced fish_prompt --editor gedit
Сохранить изменения , используя funcsave
funcsave fish_prompt
Для того, чтобы создать новое использование виртуальной среды vf new
vf new my_new_env # Make sure $HOME/.virtualenv exists
Если вы хотите создать новое окружение python3 указать его с помощью -p
флага
vf new -p python3 my_new_env
Для переключения между virtualenvironments использовать vf deactivate
и vf activate another_env
Официальные ссылки:
- https://github.com/adambrenecki/virtualfish
- http://virtualfish.readthedocs.io/en/latest/
Создание виртуальных сред с использованием Anaconda
Мощная альтернатива virtualenv
является Анаконда - кросс-платформенной, pip
- менеджером -как пакет в комплекте с функциями для быстрого создания и удаления виртуальных сред. После установки Anaconda вот несколько команд для начала: Создать среду
conda create --name <envname> python=<version>
где <envname>
в произвольное название для виртуальной среды, а <version>
представляет собой определенную версию Python вы хотите настроить. Активируйте и деактивируйте вашу среду
# Linux, Mac
source activate <envname>
source deactivate
или же
# Windows
activate <envname>
deactivate
Просмотр списка созданных сред
conda env list
Удалить среду
conda env remove -n <envname>
Найти больше команд и функций в официальной документации Конда .
Проверка, работает ли внутри виртуальной среды
Иногда приглашение оболочки не отображает имя виртуальной среды, и вы хотите быть уверенным, находитесь ли вы в виртуальной среде или нет.
Запустите интерпретатор Python и попробуйте:
import sys
sys.prefix
sys.real_prefix
- Вне виртуальной, среда
sys.prefix
будет указывать на установку системы питона иsys.real_prefix
не определен. - Для виртуальных сред создана с использованием стандартной библиотеки модуль venv нет
sys.real_prefix
.Вместо этого, проверьтеsys.base_prefix
такое же , какsys.prefix
.