GNU/Linux >> LINUX-Kenntnisse >  >> Linux

PYTHONPATH funktioniert nicht für sudo unter GNU/Linux (funktioniert für root)

Noch ein Tipp:

sudo echo $PYTHONPATH:
    /home/name/lib/py

Es wird nicht funktionieren. Shell interpretiert es wie folgt:

1) Erweitern Sie $PYTHONPATH aus der Umgebungsvariablen, zum Beispiel:/usr/lib/python

2) Führen Sie "sudo echo /usr/lib/python"

aus

Die Lösung in meinem Fall bestand darin, Defaults !env_reset zu entfernen von Sudoern.

Aber ich musste Defaults env_keep += "PYTHONPATH" behalten in Sudoern.
Ich habe tatsächlich Defaults env_reset hinzugefügt (was Umgebungsvariablen zurücksetzt), aber es funktioniert immer noch wegen env_keep .

Es scheint, dass env_keep und !env_reset miteinander in Konflikt geraten, aber das ist nur eine Vermutung.

Also, der ganze Prozess:

  1. fügen Sie export PYTHONPATH=/your/custom/path hinzu bis ~/.bashrc oder /etc/bash.bashrc
  2. fügen Sie PYTHONPATH hinzu bis Defaults env_keep += "ENV1 ENV2 ..." in der sudoers-Datei
  3. Entfernen Sie Defaults !env_reset aus der sudoers-Datei, falls vorhanden

Alternativen zur Manipulation von PYTHONPATH :

  • virtuell
  • distutils

Dasselbe gilt für PATH -Variable, wird sie auch nicht in die Superuser-Umgebung übertragen, obwohl Sie das Umgebungs-Flag -E übergeben .

Ich verwende diesen sudo-Befehl jetzt ohne weitere Änderungen:

sudo -HE env PATH=$PATH PYTHONPATH=$PYTHONPATH ./bin/myscript

Da es ein alternativer Ansatz ist, der (für mich) funktioniert, dachte ich, ich würde ihn hier teilen.


Linux
  1. Linux Setuid funktioniert nicht?

  2. Linux – Warum funktioniert Setuid nicht?

  3. Linux – Warum funktioniert USB nicht in Linux, wenn es in Uefi/Bios funktioniert?

  4. Linux – Caps Lock Led funktioniert nicht auf der Linux-Konsole?

  5. Composer installieren/aktualisieren funktioniert nicht

10 nützliche Sudoer-Konfigurationen zum Einstellen von „sudo“ in Linux

Fix Touchpad Click funktioniert nicht in Linux Mint

So richten Sie Sudo-Berechtigungen für Benutzer in Linux ein

So aktivieren Sie passwortloses Sudo für Benutzer in Linux

Linux-limits.conf funktioniert nicht?

Warum funktioniert USB unter Linux nicht, wenn es unter UEFI/BIOS funktioniert?