GNU/Linux >> Znalost Linux >  >> Linux

PYTHONPATH nefunguje pro sudo na GNU/Linux (funguje pro root)

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:

  1. přidejte export PYTHONPATH=/your/custom/path na ~/.bashrc nebo /etc/bash.bashrc
  2. přidejte PYTHONPATH na Defaults env_keep += "ENV1 ENV2 ..." v souboru sudoers
  3. 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.


Linux
  1. Linux – Proč Setuid nefunguje?

  2. Linux – LED dioda Caps Lock na konzoli Linux nefunguje?

  3. Linux – sluchátka nefungují Linux Mint 18?

  1. Konfigurace sudo pro povolení příkazů pro uživatele bez oprávnění root v systému Linux

  2. Instalace/aktualizace skladatele nefunguje

  3. Linuxový příkaz 'll' nefunguje

  1. Jak nastavit oprávnění Sudo pro uživatele v Linuxu

  2. Proč USB nefunguje v Linuxu, když funguje v UEFI/BIOS?

  3. sudo nefunguje na určitých příkazech