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.
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.
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