2015-06-03 8 views
6

ich Anaconda in einer Google Cloud Compute-Umgebung installiert und erfolgreich von der Shell als normalen Benutzer verwenden kann:Anaconda Python nicht die von sudo

[email protected]:~$ 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 

Allerdings, wenn ich einen Dolmetscher über sudo python beginnen, Anakonda ist nicht der Dolmetscher benutzt, und ich würde es gerne haben.

[email protected]:~$ 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. 

Verwirrend, wenn ich eine Schale als root beginnen und dann einen Interpreter starten, anaconda ist der Interpreter verwendet.

[email protected]:~$ sudo -s 
[email protected]:/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 

Ich habe export PATH="/anaconda/bin:$PATH" sowohl in der Wurzel und meine normalen Konto .bashrc Dateien. Zuerst dachte ich, das Problem war sudo python nicht wirklich eine Root-Shell zu starten, und damit die export PATH="/anaconda/bin:$PATH" nicht wirklich getan wird. Aber wenn sie von meinem normalen Konto, das ich sudo echo $PATH tun, es zeigt anaconda dort:

[email protected]:~$ sudo echo $PATH 
/anaconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 

Die Anakonda Installation als Root installiert wurde /anaconda und ich habe ein chmod -R 770 /anaconda es normale Benutzer zugänglich zu machen, aber ich weiß nicht denke, dass dieses Problem damit zu tun hat.

Wie kann ich Anaconda als Standardinterpreter erhalten, wenn er von einer sudo Befehlszeile ausgeführt wird?

Antwort

7

Sie haben fast alles richtig gemacht. Der einzige Fehler ist sudo echo $PATH, in dem $ PATH vor dem Senden an sudo ersetzt wird, also ist es Ihr Benutzer PATH nicht Ihr "sudoed" PFAD, der angezeigt wird.

Beachten Sie, dass Ihre sudo Implementierung und Konfiguration können das PATH-Variable ändern, wie ich in einem "Mann sudo" (aus dem Internet gefunden, da ich nicht sudo habe) lesen kann:

PATH 
    May be overridden by the security policy. 

So, in Ihrer "sudoed" -Umgebung gibt es wahrscheinlich keine /anaconda/bin/

Sie können dies mit sudo env | grep PATH testen.

Um die PATH-Umgebungsvariable in Ihrer sudoed-Umgebung zuzulassen oder zu ändern, kann ich Sie nur noch an Ihre man sudo verweisen: Ich bin kein sudo-Benutzer.

Das einzige, was ich Sie fallen kann, ist sudo $(which python), wie in sudo echo $PATH wird die $(which python) von Ihrem Benutzer ausgeführt werden, in /anaconda/bin/python so gewonnen werden, tatsächlich sudo /anaconda/bin/python laufen, die eine andere „Lösung“ ist.

Zum Schluss, ich sollte Sie warnen, dass Sie wahrscheinlich nicht Python als root ausführen möchten, gibt es fast keinen gültigen Grund, so dass Ihre Frage wahrscheinlich ein XY-Problem ist: Sie haben ein erstes Problem, Sie abgeschlossen von selbst kann es durch Ausführen von Python als root gelöst werden, Sie versuchten Sudo, wurde von sudo geändert Ihre PATH, dann posten Sie Ihre "2nd Level" Problem hier. Was ist dein "echtes Problem"? Der, der das "Hum, ich sollte es mit Sudo versuchen" ausgelöst hat?

+0

Große Antwort Julien und du hast Recht mit allem. –

+0

Schön zu hören, da ich kein sudo habe, um etwas zu verifizieren, was ich geschrieben habe, fühlte ich mich wie ich in die Produktion gedrängt ohne zu testen^-^ –

+0

Würde glücklich sein, wenn Sie es als akzeptiert markieren^-^(Auch um Zeit zu sparen jeder versucht, unbeantwortete Fragen zu finden) –

Verwandte Themen