Skip to content
Aleksejs Popovs edited this page Jul 23, 2014 · 1 revision

Virtuaenv — утилита, позволяющая создавать «виртуальную среду» для питона, т.е. установить интерпретатор в произвольную директорию, в которой будут хранится и все установленные пакеты, таким образом не засоряя /usr/lib/python2.7/site-packages

Установка

Средствами своего пакетного менеджера установите Python 2 и pip для него (обратите внимание — для второго и третьего питона разные версии pip) (пакеты extra/python2 и extra/python2-pip в арче). Потом установите virtualenv — либо пакетным менеджером (extra/python2-virtualenv в арче), либо при помощи pip2 install virtualenv.

Обратите внимание, что в разных дистрибутивах по-разному называют бинариники второго питона. python2 будет доступен почти всегда, а вот python может быть ссылкой как на python3 (Arch), так и на python2 (Debian). Аналогично с pip2/pip3 и virtualenv2/virtualenv.

Обратите внимание, что для глобальной установки пакетов (напримет, virtualenv) pip необходимо запускать от рута.

Создание среды

/tmp → virtualenv2 my_amazing_environment
New python executable in my_amazing_environment/bin/python2
Also creating executable in my_amazing_environment/bin/python
Installing setuptools, pip...done.

Если какие-то пакеты у вас уже установлены глобально, и вы хотите, чтобы они были доступны и в виртуальной среде, создавайте её с флагом --system-site-packages.

Использование среды

/tmp → cd my_amazing_environment/

/tmp/my_amazing_environment → source bin/activate

(my_amazing_environment)/tmp/my_amazing_environment → echo $PATH
/tmp/my_amazing_environment/bin:~/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:…

(my_amazing_environment)/tmp/my_amazing_environment → ls
bin  include  lib

(my_amazing_environment)/tmp/my_amazing_environment → which python
/tmp/my_amazing_environment/bin/python

(my_amazing_environment)/tmp/my_amazing_environment → which pip
/tmp/my_amazing_environment/bin/pip

(my_amazing_environment)/tmp/my_amazing_environment → pip install nose
Downloading/unpacking nose
  Downloading nose-1.3.3.tar.gz (274kB): 274kB downloaded
  Running setup.py (path:/tmp/my_amazing_environment/build/nose/setup.py) egg_info for package nose
    
    no previously-included directories found matching 'doc/.build'
Installing collected packages: nose
  Running setup.py install for nose
    
    no previously-included directories found matching 'doc/.build'
    Installing nosetests script to /tmp/my_amazing_environment/bin
    Installing nosetests-2.7 script to /tmp/my_amazing_environment/bin
Successfully installed nose
Cleaning up...

(my_amazing_environment)/tmp/my_amazing_environment → python
Python 2.7.8 (default, Jul  1 2014, 17:30:21) 
[GCC 4.9.0 20140604 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nose
>>> dir(nose)
['DeprecatedTest', 'SkipTest', …, 'with_setup']
>>> exit()

(my_amazing_environment)/tmp/my_amazing_environment → nosetests -V
nosetests version 1.3.3

Обратите внимание, что несмотря на то, что в моей системе python — это python3, внутри виртуальной среды python всё равно ссылается на единственный установленный интерпретатор — python2. Обратите внимнание также и на то, что в виртуальной среде пакеты можно устанавливать без рута.

TODO

Разобраться, как это всё работает с pypy.

Clone this wiki locally