PYTHONPATH ne fonctionne pas pour sudo sur GNU / Linux (fonctionne pour root)
EDIT: Fonctionne pour l'utilisateur root, sudo est le problème. Lire ci-dessous.
J'ai un répertoire avec mes propres bibliothèques, par exemple, mon Python bibliothèques sont situées à /home/name/lib/py
.
J'ai ajouté ce répertoire à Python CHEMIN pour tous les utilisateurs (y compris la racine) en ajoutant la ligne suivante à /etc/bash.bashrc
:
export PYTHONPATH=$PYTHONPATH:/home/name/lib/py
Il fonctionne pour tous les utilisateurs (y compris la racine). Mais il ne fonctionne pas pour sudo. Est-il possible que je peux faire sudo utilisation /etc/bash.bashrc
?
EDIT: Plus d'informations:
J'ai ajouté PYTHONPATH
à sudoers: Defaults env_keep += "HOME PYTHONPATH"
. Il sitll ne fonctionne pas.
env | grep PYTHON:
PYTHONDONTWRITEBYTECODE=1
PYTHONPATH=/home/name/lib/py
sudo env | grep PYTHON:
PYTHONDONTWRITEBYTECODE=1
sudo echo $PYTHONPATH:
/home/name/lib/py
source d'informationauteur usr
Vous devez vous connecter pour publier un commentaire.
La solution dans mon cas était de supprimer
Defaults !env_reset
de sudoers.Mais je devais garder
Defaults env_keep += "PYTHONPATH"
dans sudoers.En fait, j'ai ajouté
Defaults env_reset
(qui réinitialise les variables d'environnement), mais il fonctionne encore à cause deenv_keep
.Il semble que
env_keep
et!env_reset
conflit avec d'autres personnes, mais c'est juste une supposition.Ainsi, l'ensemble du processus:
export PYTHONPATH=/your/custom/path
à~/.bashrc
ou/etc/bash.bashrc
PYTHONPATH
àDefaults env_keep += "ENV1 ENV2 ..."
dans sudoersDefaults !env_reset
de sudoers, si présentLa même chose est vraie pour la
PATH
variable, c'est pas réalisée dans le super utilisateur de l'environnement, même si vous êtes de passage le de préserver l'environnement drapeau-E
.Je suis à l'aide de cette commande sudo maintenant, sans aucune autre modification:
Puisque c'est une approche alternative qui fonctionne (pour moi) je pensais que je voudrais partager ici.
Une autre astuce:
Ça ne marchera pas. Shell va l'interpréter comme ceci:
1) développez $PYTHONPATH d'env variable par exemple: /usr/lib/python
2) exécuter la commande "sudo echo /usr/lib/python"
Alternatives à la manipulation de
PYTHONPATH
:Cela devrait sans doute être posté ailleurs. Mais sudo ne traitera pas de l'environnement de fichier par défaut. Si vous voulez vous prévaloir que l'option-i devrait vous aider. Il permettra de simuler que les utilisateurs lors de la connexion initiale.
Vous pourriez avoir à jouer avec l'endroit où vous mettez vos variables. http://linux.die.net/man/8/sudo