Виртуальные окружения python

Virtualenv позволяет не загромождать лишними python-библиотеками основную систему.

Ко всему прочему, далеко не все необходимые модули и библиотеки имеются в репозиториях ОС.

Работа с виртуальным окружением

Для создания окружения потребуется пакет python-virtualenv и python-pip

Создаём окружение командой:

virtualenv --system-site-packages virt

(с параметром --system-site-packages все установленные в системе python-библиотеки будут доступны из окружения)

При этом будет создана папка virt в которой будут содержаться все необходимые файлы.

Этой командой можно так-же синхронизировать файлы окружения с установленными в системе python-модулями. Для этого необходимо вместо virt указать имя папки с существующим окружением.

Входим и выходим из окружения

Теперь, для того, чтобы зайти в виртуальное окружение необходимо набрать команду (любым пользователем)

. /путь/до/папки/bin/activate

(Обратите внимание "точка, пробел, относительный/полный путь до папки")

Теперь вы в виртуальном окружении, о чём должна свидетельствовать изменившаяся строка ввода команд. Обычно в начало добавляется "(virt)" Например: (virt)darthvader@deathstar$

Выйти из окружения можно введя команду deactivate

Пакетный менеджер pip

В виртуальном окружении имеется свой пакетный менеджер pip

  • pip freeze — выведет все установленные в окружении модули и библиотеки (в более новых версиях pip list)
  • pip install <packagename> — установка packagename (packagename будет скачан с оф.репозитория)
  • pip search <packagename> — поиск в python-репозиториях
  • pip uninstall

Особенности установки пакетов. Компиляция

Некоторые модули и библиотеки требуют компиляции, так к примеру PIL/Pillow - библиотека для работы с изображениями требует компиляции.

Компиляция происходит с использованием системного компилятора и системных заголовочных файлов (файлы с расширением .h).

Необходимо, чтобы в системе были установлены заголовочные файлы python (в debian/ubuntu такие файлы поставляются отдельно от самого интерпретатора, а в некоторых других ОС, к примеру slackware — все файлы свалены в одну кучу).

После компиляции файлы копируются в папку с виртуальным окружением.

Переносим окружение

Обычно делается после переноса сайта и окружения с другой машины.

  1. Перед переносом сайта, войти в старое виртуальное окружение и получить список установленных модулей, библиотек и их версии:
    1. . /путь/к/окружению/bin/activate
    2. pip freeze > requires.txt
    3. deactivate
  2. Переселить файл requires.txt
  3. Старую папку с окружением можно удалить, нам нужен был только список установленных там модулей
  4. Создать окружение на новом месте
    1. virtualenv --system-site-packages new_virt
    2. . new_virt/bin/activate
    3. pip install --upgrade setuptools
    4. pip install -r requires.txt
    5. deactivate
  5. Не забыть поправить у веб-сервера путь до нового виртуального окружения
  6. ?????
  7. PROFIT!
blog comments powered by Disqus
π