Документация по Python

Виртуальные среды

В: Документация по Python

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

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 .



Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.