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/path
na~/.bashrc
nebo/etc/bash.bashrc
- přidejte
PYTHONPATH
naDefaults env_keep += "ENV1 ENV2 ..."
v souboru sudoers - odebrat
Defaults !env_reset
ze 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.