2015-06-03 11 views
6

ho installato Anaconda in un ambiente di Google Cloud Compute e può essere utilizzato con successo dalla shell come utente normale:Anaconda non python disponibili da 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 

Tuttavia, quando si avvia un interprete tramite sudo python, anaconda è non l'interprete usato, e mi piacerebbe che fosse.

[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. 

Confusamente, quando inizio una shell come root e poi iniziare un interprete, anaconda è l'interprete usato.

[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 

devo export PATH="/anaconda/bin:$PATH" sia la radice del file e il mio normale account .bashrc. All'inizio ho pensato che il problema era sudo python non in realtà l'avvio di una shell di root, e quindi il export PATH="/anaconda/bin:$PATH" non veniva effettivamente eseguito. Ma quando dal mio conto normale faccio sudo echo $PATH, mostra Anaconda in là:

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

L'anaconda è stato installato come root in /anaconda e ho fatto un chmod -R 770 /anaconda per renderlo accessibile agli utenti normali, ma non lo faccio pensa che questo problema abbia qualcosa a che fare con questo.

Come posso ottenere che anaconda diventi l'interprete predefinito quando viene eseguito da una riga di comando sudo?

risposta

7

Hai quasi tutto a posto. L'unico errore è sudo echo $PATH, dove $ PATH viene sostituito PRIMA di essere inviato a sudo, quindi è il PATH dell'utente che non è il PATH "sudoed" che viene visualizzato.

Nota che l'implementazione e la configurazione sudo possono modificare la variabile PATH, come posso leggere in un "uomo sudo" (trovato da Internet come non ho sudo):

PATH 
    May be overridden by the security policy. 

Quindi, nel tuo ambiente "sudoed", probabilmente non c'è /anaconda/bin/

Si può verificare usando sudo env | grep PATH.

Per consentire o modificare la variabile di ambiente PATH nell'ambiente sudoed, posso indirizzarti solo al tuo man sudo, ancora: Non sono un utente sudo.

L'unica cosa che posso farvi è sudo $(which python), come nel sudo echo $PATH, il $(which python) verrà eseguito dal tuo utente, con conseguente /anaconda/bin/python, quindi effettivamente in esecuzione sudo /anaconda/bin/python che è un'altra "soluzione".

Per concludere, dovrei avvisarti che probabilmente non vuoi eseguire Python come root, non c'è quasi nessuna ragione valida per farlo, quindi la tua domanda è probabilmente un problema XY: hai un primo problema, tu concluso da solo può essere risolto eseguendo Python come root, hai provato sudo, sei stato colpito da sudo cambiando il tuo PATH, quindi hai postato il tuo problema di "2 ° livello" qui. Qual è il tuo "vero problema"? Quello che ha innescato il "Hum, dovrei provare con sudo"?

+0

Ottima risposta Julien e hai ragione su tutto. –

+0

Bello sentire, dato che non ho sudo per verificare nulla di quello che ho scritto, mi sentivo come se avessi spinto alla produzione senza test^-^ –

+0

Sarebbe felice se lo contrassegnassi come accettato^-^(Anche per risparmiare tempo a tutti cercano di trovare domande senza risposta) –

Problemi correlati