Další tip:
sudo echo $PYTHONPATH:
/home/name/lib/py
To nebude fungovat. Shell to bude interpretovat takto:
1) rozbalte $PYTHONPATH z proměnné env například:/usr/lib/python
2) spusťte "sudo echo /usr/lib/python"
Opravou v mém případě bylo odstranění Defaults !env_reset od sudoers.
Ale musel jsem zachovat Defaults env_keep += "PYTHONPATH" v sudoers.
Vlastně jsem přidal Defaults env_reset (což resetuje proměnné prostředí), ale stále to funguje kvůli env_keep .
Zdá se, že env_keep a !env_reset konflikt mezi sebou, ale to je jen odhad.
Takže celý proces:
- přidejte
export PYTHONPATH=/your/custom/pathna~/.bashrcnebo/etc/bash.bashrc - přidejte
PYTHONPATHnaDefaults env_keep += "ENV1 ENV2 ..."v souboru sudoers - odebrat
Defaults !env_resetze souboru sudoers, pokud je přítomen
Alternativy k manipulaci s PYTHONPATH :
- virtuální
- distutils
Totéž platí pro PATH proměnná, není také přenesena do superuživatelského prostředí, i když předáváte příznak zachování prostředí -E .
Tento příkaz sudo nyní používám bez dalších úprav:
sudo -HE env PATH=$PATH PYTHONPATH=$PYTHONPATH ./bin/myscript
Protože je to alternativní přístup, který (pro mě) funguje, řekl jsem si, že se o to podělím zde.