Saturday, December 13, 2014

Python virtual environment и pip

Создать виртуальное окружение Python:
  1. cd </path/to/target/project>
  2. </path/to/needed/python>/bin/pyvenv VENV
Использовать виртуальное окружение:
  1. In Unix bash shell use:
    $ source <venv>/bin/activate - to activate virtual environment
    $ deactivate - to deactivate it
  2. In Windows cmd.exe use:
    C:> <venv>/Scripts/activate.bat - to activate virtual environment
    C:> <venv>/Scripts/deactivate.bat - to deactivate it
pip - пакетный менеджер, очень похожий на easy_install, с одним серьёзным отличием: pip умеет устанавливать пакеты определённых ревизий прямо из репозитория, используя git, mercurial, bazaar, subversion и некоторые другие системы контроля версий.

Можно составить список зависимостей проекта. 
Вот, например, список зависимостей сайта:

dateutils
pytz
python-openid==2.2.4
oauth==1.0.1
feedparser==4.1
akismet==0.2
-e svn+http://pyfacebook.googlecode.com/svn/trunk/#egg=pyfacebook
-e svn+http://code.djangoproject.com/svn/django/trunk@13290#egg=django
-e svn+http://django-compress.googlecode.com/svn/trunk@98#egg=django_compress
-e svn+http://django-voting.googlecode.com/svn/trunk/@73#egg=django_voting
-e svn+http://django-mptt.googlecode.com/svn/trunk/@121#egg=django_mptt
-e hg+http://bitbucket.org/offline/django-annoying/@24#egg=django_annoying
-e hg+http://bitbucket.org/offline/django-confirmation/@8#egg=django_confirmation
-e hg+http://bitbucket.org/offline/django-publicauth/@76#egg=django_publicauth
-e hg+http://bitbucket.org/offline/django-simplepagination/@5#egg=django_simplepagination
-e hg+http://bitbucket.org/offline/django-tagging2/@20#egg=django_tagging2
-e hg+http://bitbucket.org/offline/django-bbmarkup/@12#egg=django_bbmarkup
-e hg+http://bitbucket.org/offline/django-tsearch2/@6#egg=django_tsearch2
-e hg+http://bitbucket.org/andrewgodwin/south/@700#egg=django_south
-e hg+http://bitbucket.org/lorien/sape/@16#egg=sape
-e git+git://github.com/alex/django-filter.git@bdb1015f34#egg=django_filter
-e git+git://github.com/clintecker/django-google-analytics.git@d28bca4de2#egg=google_analytics
-e git+git://github.com/j2a/pytils.git@4316927ff5d3f#egg=pytils

Строчки, которые не начинаются с "- e", устанавливаются с сайта pypi.python.org. Если у пакета не указана версия, то устанавливается последняя.

В случае с остальными записями, они выкачиваются из репозиториев и могут тянуть пакет определённой ревизии, она указывается после знака "@"
Также нужно указать папку, в которую будут складываться файлы пакета. Это название не влияет на конечный результат, но указывается в обязательном порядке после #egg=

Если вы хотите установить пакет из git-репозитория, в системе должен быть установлен git.

После того, как вы создали список зависимостей и сохранили его в файле, запускайте:

  • команду pip install -r path_to_file.req для активированного виртуального окружения
  • команду pip install -r path_to_file.req -E </path/to/VENV> для неактивированного виртуального окружения