Anaconda python non disponible chez sudo

J’ai installé Anaconda dans un environnement Google Cloud Compute et je peux l’utiliser avec succès depuis le shell en tant qu’utilisateur normal:

curt@lamp-v5mi:~$ python Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar 9 2015, 16:20:48) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. Anaconda is brought to you by Continuum Analytics. Please check out: http://continuum.io/thanks and https://binstar.org 

Cependant, lorsque je lance un interpréteur via sudo python , anaconda n’est pas l’interpréteur utilisé et j’aimerais qu’il le soit.

 curt@lamp-v5mi:~$ sudo python Python 2.7.3 (default, Mar 13 2014, 11:03:55) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. 

Confusément, quand je lance un shell en tant que root et que je lance un interpréteur, anaconda est l’interpréteur utilisé.

 curt@lamp-v5mi:~$ sudo -s root@lamp-v5mi:/home/curt# python Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar 9 2015, 16:20:48) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. Anaconda is brought to you by Continuum Analytics. Please check out: http://continuum.io/thanks and https://binstar.org 

J’ai export PATH="/anaconda/bin:$PATH" dans les fichiers .bashrc la racine et de mon compte normal. Au début, je pensais que le problème était que sudo python ne démarrait pas réellement un shell racine, et donc que l’ export PATH="/anaconda/bin:$PATH" n’était pas effectuée. Mais quand de mon compte normal je fais sudo echo $PATH , cela montre anaconda:

 curt@lamp-v5mi:~$ sudo echo $PATH /anaconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 

L’installation d’anaconda a été installée en tant que root dans /anaconda et j’ai fait un chmod -R 770 /anaconda pour le rendre accessible aux utilisateurs normaux, mais je ne pense pas que ce problème ait quelque chose à voir avec cela.

Comment puis-je obtenir anaconda comme interpréteur par défaut lorsqu’il est exécuté à partir d’une ligne de commande sudo ?

Vous avez presque tout compris. La seule erreur est sudo echo $PATH , où $ PATH est substitué AVANT d’être envoyé à sudo, donc c’est votre utilisateur PATH pas votre PATH “sudoed” qui est affiché.

Notez que votre implémentation et votre configuration sudo peuvent changer la variable PATH, car je peux lire dans un “man sudo” (trouvé sur Internet car je n’ai pas sudo):

 PATH May be overridden by the security policy. 

Donc, dans votre environnement “sudoed”, il n’y a probablement pas /anaconda/bin/

Vous pouvez tester cela en utilisant sudo env | grep PATH sudo env | grep PATH .

Pour autoriser ou modifier la variable d’environnement PATH dans votre environnement sudoed, je ne peux que vous diriger vers votre man sudo : Je ne suis pas un utilisateur sudo.

La seule chose que je peux vous laisser tomber est sudo $(which python) , comme dans sudo echo $PATH , le $(which python) sera exécuté par votre utilisateur, résultant en /anaconda/bin/python , donc en cours d’exécution sudo /anaconda/bin/python qui est une autre “solution”.

Pour conclure, je devrais vous avertir que vous ne voulez probablement pas exécuter Python en tant que root, il n’y a presque aucune raison valable de le faire, donc votre question est probablement un problème XY: vous avez un premier problème, vous avez conclu par vous-même peut être résolu en exécutant Python en tant que root, vous avez essayé sudo, vous avez été touché par sudo en changeant votre PATH , puis vous avez posté votre problème “2nd level” ici. Quel est votre “vrai problème”? Celui qui a déclenché le “Hum, je devrais essayer avec sudo”?