[python] PYTHONPATH

Hynek Fabian hynek.fabian na firma.seznam.cz
Pátek Leden 13 19:57:45 CET 2012


> Co je alepro mě nepochopitelné, proč programy spouštěné z crontabu s
> uživatelem root havarují, že nenašly cestu k "mojemoduly".
> 
> Viz řádek z crontabu: * * * * *    root    program.py
> kde program.py má import modulu z "mojemoduly"
S cronem je ten problém, že je to systémový démon a podědí od initu jen to 
nejmenší nastavení prostředí.  Procesy z něj spouštěné tedy neuvidí ani čárku 
ze systémového ani uživatelského profilu (/etc/profile a $HOME/.profile plus 
bashizmy). Nejsem si jistý jestli se provede .bashrc (záleží jestli cron 
spouští podprocesy voláním system nebo exec* ale to z hlavy nevím).
Jediná jistota je všechno si nastavit ručně v crontabu. PATH, PYTHONPATH a 
LC_ALL nastavuji běžně:

PYTHONPATH=/usr/local/share/mojemaximegapajtniknihovna/
* * * * *    root    program.py

 
> Vaší radě na přidání řádku do ~/.bashrc nerozumím. Co je to normální
> uživatel, když jsem přihlášený jako root a jako root jsou programy i
> spouštěné.
Tak je normální uživatel root :-) Matěj asi chtěl říci, že root to může 
připsat i do systémových konfiguráků v /etc a pak to platí pro každého 
uživatele automaticky. I root má ale vlastní .profile a .bashrc ve svém 
domovském adresáři.

BTW slovo varování: neboj se vlka nic a klidně si s tím hraj, jen na jednu věc 
si dej pozor - z bashrc nikdy nic nevypisuj na výstup. Spouští se totiž i z 
různých neinteraktivních sezení které s tím mohou mít problém. Třeba ssh panel 
v  midnightu to velmi nemá rád a taková chyba se pak blbě hledá.
S profilem problém není.


Další informace o konferenci Python