GNU/Linux >> Tutoriels Linux >  >> Linux

PYTHONPATH ne fonctionne pas pour sudo sur GNU/Linux (fonctionne pour root)

Autre conseil :

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

Cela ne fonctionnera pas. Shell l'interprétera comme ceci :

1) développez $PYTHONPATH à partir de la variable env par exemple :/usr/lib/python

2) exécutez "sudo echo /usr/lib/python"


Le correctif dans mon cas consistait à supprimer Defaults !env_reset de sudoers.

Mais, je devais garder Defaults env_keep += "PYTHONPATH" dans les sudoers.
J'ai en fait ajouté Defaults env_reset (qui réinitialise les variables d'environnement), mais cela fonctionne toujours à cause de env_keep .

Il semble que env_keep et !env_reset sont en conflit les uns avec les autres, mais ce n'est qu'une supposition.

Donc, tout le processus :

  1. ajouter export PYTHONPATH=/your/custom/path à ~/.bashrc ou /etc/bash.bashrc
  2. ajouter PYTHONPATH à Defaults env_keep += "ENV1 ENV2 ..." dans le fichier sudoers
  3. supprimer Defaults !env_reset du fichier sudoers si présent

Alternatives à la manipulation de PYTHONPATH :

  • environnement virtuel
  • distutils

Il en est de même pour le PATH variable, elle n'est pas non plus transportée dans l'environnement du super utilisateur, même si vous passez l'indicateur de préservation de l'environnement -E .

J'utilise cette commande sudo maintenant sans aucune autre modification :

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

Comme c'est une approche alternative qui fonctionne (pour moi), j'ai pensé partager ici.


Linux
  1. Linux - Pourquoi USB ne fonctionne-t-il pas sous Linux alors qu'il fonctionne sous Uefi/bios ?

  2. Linux - La LED de verrouillage des majuscules ne fonctionne pas sur la console Linux ?

  3. Linux - Le casque ne fonctionne pas Linux Mint 18 ?

  4. fflush() ne fonctionne pas sous Linux

  5. L'installation/la mise à jour de Composer ne fonctionne pas

10 configurations Sudoers utiles pour définir « sudo » sous Linux

Correction du clic sur le pavé tactile ne fonctionnant pas sous Linux Mint

Comment configurer les privilèges Sudo pour l'utilisateur sous Linux

Comment activer le sudo sans mot de passe pour l'utilisateur sous Linux

Les scripts de données utilisateur ne s'exécutent pas sur mon AMI personnalisée, mais fonctionnent dans Amazon Linux standard

La commande Linux 'll' ne fonctionne pas