[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