Новите Python апликации и framework-ци користат голем број екстерни Python пакети. Само како пример, инсталацијата на Pylons или TurboGears2 повлекува повеќе од 40-тина други пакети (templating јазици, WSGI компоненти за сесии, кеширање итн итн).

Постојат неколку начини на инсталација на сите овие потребни пакети. Едниот е преку пакет менаџерот на Linux дистрибуцијата - на пр. apt-get install python-genshi и сл. Но ова бара root привилегии и ја комплицира инсталацијата на апликацијата на други системи. Уште полошо, некои Python апликации бараат специфични верзии на додатните пакети, а не секогаш дистрибуцијата ја има баш таа верзија.

За среќа, постојат повеќе решенија на овие проблеми, а овде ќе ја документирам таа мене ми е најлесна, користејќи ја алатката pip, со забелешка дела ова решение функционира само за Python 2.6 и понови.

Накратко:
wget https://svn.openplans.org/svn/pip/trunk/pip.py
chmod +x pip.py

export PYTHONUSERBASE=$HOME/my-python
./pip.py install --install-option=--user Pylons
со овие команди го инсталираме Pylons со се сите негови додатни пакети во виртуелната Python околина „$HOME/my-python“ без потреба од root привилегии. Дополнително, pip.py ќе ги инсталира точните верзии на пакетите кои Pylons ги бара.

Со едноставна промена на PYTHONUSERBASE можеме да имаме и повеќе вакви околини, што е згодно доколку сакаме на пример да имаме паралелно инсталирани и TurboGears 1.0 и 2.0, или некои други апликации кои имаат конфликтни верзии.

Забелешка: во $PYTHONUSERBASE/bin pip.py ќе инсталира некои контролни скрипти од пакетите, како на пр. скриптата paster од Paste или couchdb-dump од пакетот CouchDB. Доколку сакате, можете овој директориум да го додадете во PATH (export PATH=$PYTHONUSERBASE/bin:$PATH) за да не мора постојано да ја пишувате целата патека (~/my-python/bin/paster ...).


Други решенија на истиов проблем се: virtualpython, workingenv, virtualenv (надградба на претходните две), buildout, setuptools (можеби). Но оваа варијанта со pip.py и PYTHONUSERBASE мене ми изгледа најелегантна.

ps.
повеќе за позадината на ова решение во Python документацијата и PEP-370.

Објавено: пет, 10 апр 18:34:53 CEST 2009
[æ]