[python] PYTHONPATH

Hynek Fabian hynek.fabian na firma.seznam.cz
Úterý Leden 17 18:50:36 CET 2012


> Muzete delat blbosti jako .bashrc a .profile, muzete treba najit funkcni reseni pres .pth. Faktem je, ze je to vsechno drbani se pravou rukou za levym uchem.
> 
> Virtualenv je de-facto standard, ktery resi vsechno tohle davno. Takze bud muzete 1] pouzit standardni reseni, ktere to davno resi, je otestovane a bude se vam jeho znalost hodit i na dalsi veci, 
> 2] nebo si vymyslet vlastni podivny hacky. 
> Jen ty hacky, prosim, neradte zacatecnikum jako _dobre_ reseni.

To je legrační, já bych řekl že unixové prostředí (enviroment) je
standartní věc už nějakých čtyřicet let - ve srovnání s tím je naopak
virtualenv drbání se někde. (.pth jsem zmínil jen pro úplnost, používá
se to spíše při balíčkování) Takže můžete buď
1) použít standartní řešení (PYTHONPATH), které obdobně používá shell
(PATH), java (CLASSPATH), linker (LD_LIBRARY_PATH), ruby (RUBYLIB) a asi
milion dalších programů a programátorů nebo
2) vymýšlet podivné hacky které ve skutečnosti nic neřeší (resp. řeší
úplně jiný problém).

Jak jsem už psal, nechci hanět samotný virtualenv protože si umím
představit řadu  situací (složitějších než to co řeší tazatel) kdy bude
užitečný, jen ho prosím neraďte začátečníkům jako _žádné_ řešení.

Vladislavův problém nebyl s PYTHONPATH, ale kde a jak ho správně
nastavit, což je otázka jeho distribuce a základů shellu. Zmáknul to
AFAIK výborně (/etc/profile.d je v distrech které jím oplývají určen
přesně na tohle) a s cronem si určitě taky poradí :-)
(BTW není problém v tom že cron nerovíjí obsah proměnné jako shell? tj.
konstrukce FOO="neco:$FOO" nebude v crontabu fungovat. A ani není
potřeba, právě proto že je prostředí úplně holé.)


Další informace o konferenci Python