source для virtualenv под windows

Иногда бывает нужно сделать свой, небольшой локальный Python-мирок. Например, если мы пишем на djan­go и не хотим ставить пакеты глобально.

Это очень поможет, когда намного позже мы будем собирать инсталлятор к проекту. Мы сможем одной командой pip узнать, какие пакеты нужны.

Как это делается сейчас

Python 3 научился создавать vir­tualenv штатными средствами. Вот так:

python3 -m venv /path/to/new/virtual/environment

Дальше работаем через cyg­win (как описано дальше).

Или переходим/ставим виртуалку для Ubun­tu.

Как это делалось раньше

Официальная документация по djan­go советует vir­tualenv. Действия такие:

$ virtualenv env
$ source env/bin/activate

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

Но если вы вынуждены работать под Win­dows (например, такова политика компании), то это невозможно — в языке консоли Win­dows нет команды source или её аналога. Да и в Pow­er­shell она сводится к запуску скрипта в определённом контексте.

Самый лучший выход для Python 2.x — поставить cyg­win. Он ставится быстро, осваивается за несколько минут (логические диски — это папки вида /cygdrive/c/, остальное как привыкли) и позволяет писать строго по инструкции.

Правда, многих пакетов, который нам понадобятся, в нём по умолчанию нет. Поэтому надо их дополнительно поставить.

Для начала — при установке укажите, что хотите поставить Lynx. Если вы забыли — просто запустите установку ещё раз и укажите нужный пакет, он сам докачает и положет в нужную папку.

Потом ставим скрипт apt-cyg, который эмулирует apt-get.

lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

Теперь начинаем ставить командами в духе apt-get install wget (пока wget-а нет, он будет качать через lynx)

И дальше по инструкции для Python

Ставим пакеты, настраиваем и приступаем к работе. Или просто берём готовую сборку.

В процессе установки пакетов есть риск подорваться. Если попытаться поставить их через ez_setup.py, то внезапно узнаешь, что urllib2.HTTPError: HTTP Error 403: SSL is required.

Это связано с тем, что Pip поменял правила доступа к репозиторию. И давно обзавёлся своим инсталлятором:

apt-cyg curl # если ещё не ставил
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

Далее настраиваем, как положено, и наслаждаемся vir­tualenv.

  • Создать: mkvirtualenv my-first-env
  • Запустить: workon my-first-env
  • Завершить: deactivate
  • Удалить: rmvirtualenv my-first-env