Pythoní virtuální prostředí

V rámci operačního systému na serveru, kde je váš web, máte k dispozici několik málo pythoních knihoven, které stačí třeba pro aplikace napsané v Djangu, jenž už nic dalšího nepotřebují. Na stejném místě najdete hlavně knihovny, které jsou potřeba pro spolupráci s dalšími službami Roští.cz, například s databázemi. Jednou se ovšem dostanete do situace, kdy chcete mít vlastní knihovnu nebo dokonce jinou verzi Pythona a tady přichází na řadu takzvaný virtualenv. To je nástroj, kterým můžete vytvořit pythoní prostředí oddělené nebo doplňující to co je na serveru. Do tohoto prostředí si nainstalujete libovolně knihovny, dokonce v libovolné verzi.

Na Roští jsou virtualenvy uloženy v adresáři ~/virtualenvs. Každý uživatel má hned po registraci jeden virtualenv s názvem default, ale v rámci tohoto adresáře si může vytvořit virtualenvů kolik chce, ideálně jeden pro každou aplikaci. Virtualenv byste si měli dobře pojmenovat, protože jeho název budete zadávat při přidávání aplikace v administraci.

Důležitou vlastnosti virtualenv je oddělení prostředí aplikace od prostředí serveru. Změna konfigurace serveru nebude tak ovlivňovat běžící aplikace.

Virtualenvy nelze zpravovat z administrace. Kdybyste měli jakýkoli problém s jejich vytvářením v příkazové řádce, obraťte se na technickou podporu.

Jak na to

Virtualenv je fyzický adresář, který obsahuje unixovskou strukturu s několika binárkami, knihovnami a samozřejmě pythoními moduly. Vytvoříme ho následujícím způsobem:

$ cd ~/virtualenvs
$ virtualenv test
New python executable in test/bin/python
Installing distribute..................................................................................................................................................................................done.

Nezapomeňte, že administrace bude znát pouze virtualenvy, které jsou v adresáři ~/virtualenvs.

Máte-li vytvořený virtualenv, můžete do v něm upravovat konfiguraci Pythona nebo přidávat balíčky. To lze dělat pomocí utilit easy_install a pip, přičemž se doporučuje používat spíše druhou variantu. Dejme tomu, do virtuenvu test chcete přidat poslední verzi Djanga. To můžete provést následujícím způsobem:

$ ~/virtualenvs/test/bin/pip install --upgrade django
Downloading/unpacking django
  Downloading Django-1.3.tar.gz (6.5Mb): 6.5Mb downloaded
  Running setup.py egg_info for package django
Installing collected packages: django
  Found existing installation: Django 1.2.3
    Not uninstalling Django at /opt/python/Django-1.2.3-py2.6.egg, outside environment /home/cx/virtualenvs/test
  Running setup.py install for django
    changing mode of build/scripts-2.6/django-admin.py from 644 to 755
    changing mode of /home/cx/virtualenvs/test/bin/django-admin.py to 755
Successfully installed django
Cleaning up...

Parametr –upgrade uvádějte v případě, že chcete aktualizovat existující balíček nebo do svého virtualenvu nainstalovat nějaký balíček, který už je v operačním systému serveru.

Pro úplnost instalace balíčku, který v systému není:

$ ~/virtualenvs/test/bin/pip install django-tinymce
Downloading/unpacking django-tinymce
  Downloading django-tinymce-1.5.1a1.tar.gz (975Kb): 975Kb downloaded
  Running setup.py egg_info for package django-tinymce
    warning: no previously-included files found matching '*.pyc'
Installing collected packages: django-tinymce
  Running setup.py install for django-tinymce
    warning: no previously-included files found matching '*.pyc'
Successfully installed django-tinymce
Cleaning up...

Výhodou programu pip je, že si můžete vybrat verzi balíčku, kterou váš program požaduje. Tady je příklad instalace Djanga 1.2.5 do nového virtualenvu:

$ cd ~/virtualenvs
$ virtualenv django125
$ ./django125/bin/pip install django==1.2.5
Downloading/unpacking django==1.2.5
  Downloading Django-1.2.5.tar.gz (6.4Mb): 6.4Mb downloaded
  Running setup.py egg_info for package django
Installing collected packages: django
  Found existing installation: Django 1.2.3
    Not uninstalling Django at /opt/python/Django-1.2.3-py2.6.egg, outside environment /home/cx/virtualenvs/django125
  Running setup.py install for django
    changing mode of build/scripts-2.6/django-admin.py from 644 to 755
    changing mode of /home/cx/virtualenvs/django125/bin/django-admin.py to 755
Successfully installed django
Cleaning up...

Někdy se může hodit vytvoření virtualenvu absolutně nezávisle na systému. To se dělá parametrem –no-site-packages:

$ virtualenv --no-site-packages nosite

Tím se vytvořil virtualenv nosite, který bude obsahovat čistého pythona bez jediného modulu. Tady si dejte pozor, ne všechny moduly jdou doinstalovat. Některé jsou z části napsané v jazyku C a tak se musí zkompilovat. K tomu nemusejí být v systému všechny knihovny. V takovém případě se obraťte na podporu.

Interpretr pythona patřícího k virtualenvu spustíte přes ~/virtualenvs/<název_virtualenvu>/bin/python.

Aktivace nového pythoního prostředí

Příklad aktivace vytvořeného virtualenvu v příkazové řádce:

cx@pandora:~/virtualenvs/django13$ source bin/activate
(django13)cx@pandora:~/virtualenvs/django13$ 
(django13)cx@pandora:~/virtualenvs/django13$ python -V
Python 2.6.6
virtualenv.txt · Poslední úprava: 2011/06/15 20:54 autor: cx
 
Kromě míst, kde je explicitně uvedeno jinak, je obsah této wiki licencován pod následující licencí: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki