2015-04-26 18 views
11

C'è un modo per forzare conda ad usare la versione di sistema di python (insieme a tutte le librerie di sistema) in un dato ambiente?Permetti l'uso di system python in conda env?

Nella mia shell sono abilitato per impostazione predefinita, che può risultare un po 'fastidioso, perché se provo a eseguire un'app di python di sistema, ottiene una versione diversa di python su ciò che si aspetta (python è ancora impostato su 2.7 su * buntu), e spesso non verrà eseguito. Vorrei che l'env root di conda fosse semplicemente un reindirizzamento all'installazione di python di sistema.

+0

Puoi fornire un esempio di app/esperienza, non l'ho visto. –

+0

@AndyHayden: Sto usando python 3.4 nel mio env root di conda, e quindi praticamente qualsiasi pacchetto di Ubuntu che abbia '! #/Bin/env python' all'inizio dello script principale fallirà se viene eseguito dalla riga di comando (perché si aspetta python 2, che è ancora il default). Il mio '.profile' e' .zshrc' hanno entrambi le linee '# aggiunte dall'installer di Miniconda3 3.9.1; export PATH = "/ home/naught101/miniconda3/bin: $ PATH" 'in essi, quindi conda è abilitato in tutte le shell di default. – naught101

+0

Pensi che questo sia un bug in queste applicazioni? Quali applicazioni? Puoi installare quell'applicazione con conda (piuttosto che apt-get)? –

risposta

1

È necessario modificare tutti i comandi di esecuzione della shell utente come il file .bashrc per anteporre la directory bin di anaconda al percorso export PATH=~/anaconda/bin:$PATH, mentre nei comandi di esecuzione radice si aggiunge export PATH=$PATH:~/anaconda/bin. In entrambi i casi si avrà accesso al comando conda. È possibile verificare quale python verrà eseguito digitando $env python --version. Puoi anche verificare quali altre versioni sarebbero disponibili e il loro ordine di priorità (se l'altra è rimossa) usando $type -a python. Naturalmente assicurati che i tuoi file python eseguibili abbiano #!/usr/bin/env python e non qualche altra via diretta verso un eseguibile python. Per ulteriori informazioni Google BASH Shell cerca query come http://www.cyberciti.biz/tips/an-example-how-shell-understand-which-program-to-run-part-ii.html.

+0

@ naught101, credo che ciò che è spiegato sopra funzionerebbe: se modifichi i comandi di esecuzione che vengono eseguiti con l'utente root in modo che il PATH esportato legga "export PATH =" $ PATH:/home/naught101/miniconda3/bin " '(dovrebbero risiedere sia nella root che nella home dell'utente tramite' $ cd ~ '), qualsiasi file/script/etc che viene eseguito in root dovrebbe cercare il python predefinito prima della tua versione conda come spiegato e dovresti essere in grado di verificare usando i metodi sopra. – 5upa

+1

Sì, rende il sistema python predefinito all'avvio di una shell, il che è buono, ma se si attiva 'source activate blah' e quindi 'source deactivate', la root di conda env python diventa di nuovo predefinita, fino a quando non si riavvia la shell . – naught101

+1

@ naught101 puoi provare questo: 'export PATH = $ (conda ..disattivare) ' – phil

0

È sufficiente rimuovere il collegamento simbolico python da ~/miniconda3/bin/ per eseguire il lavoro.

$ which python   
/home/naught101/miniconda3/bin/python 
$ rm /home/naught101/miniconda3/bin/python 
$ which python        
/usr/bin/python 
$ source activate science     
discarding /home/naught101/miniconda3/bin from PATH 
prepending /home/naught101/miniconda3/envs/science/bin to PATH 
(science)$ which python   
/home/naught101/miniconda3/envs/science/bin/python 
(science)$ source deactivate      
discarding /home/naught101/miniconda3/envs/science/bin from PATH 
$ which python  
/usr/bin/python 

Finora, questo non sembra aver causato alcun problema. Sfortunatamente lo stesso non funziona per ~/miniconda/bin/python3, perché conda lo richiede quando si passa ad altri env che usano la stessa versione di Python. Tuttavia, quello non ha causato tanti problemi in primo luogo.

Se questo fa causare problemi, è abbastanza facile da annullare, basta cd ~/miniconda/bin/; ln -s python3 python (o che cosa mai versione di Python che si sta utilizzando nel vostro Conda radice ENV). Potrebbe essere necessario attivare/disattivare un env per ottenere di nuovo quella versione di python sul PATH.