Come modificare l'ambiente Python Anaconda predefinito


170

Ho installato Anaconda e creato due ambienti extra: py3k (che contiene Python 3.3) e py34 (che contiene Python 3.4). Oltre a questi, ho un ambiente predefinito chiamato 'root' che il programma di installazione Anaconda ha creato per impostazione predefinita e che contiene Python 2.7. Quest'ultimo è il valore predefinito, ogni volta che lancio 'ipython' dal terminale mi dà la versione 2.7. Per lavorare con Python 3.4, devo emettere i comandi (nella shell)

source activate py34
ipython

che cambiano l'ambiente predefinito in Python 3.4. Funziona bene, ma è fastidioso dato che per la maggior parte del tempo lavoro su Python 3.4, anziché su Python 2.7 (che tengo per scopi didattici, è una storia piuttosto lunga). Ad ogni modo, mi piacerebbe sapere come modificare l'ambiente predefinito in Python 3.4, tenendo presente che non voglio reinstallare tutto da zero.


7
hai pensato di utilizzare source activate py34nel tuo .bashrc?
cel

1
Grazie per la tua risposta. Non l'ho provato perché penso che non sia possibile chiamare source activ da uno script bash, poiché il comando source deve essere eseguito nella stessa shell, non in una subshell. Ho provato a mettere le due righe sopra in uno script bash, e posso dire che non funziona.
user2734434

4
Ho CONDA_ROOT="/Users/bla/miniconda"e source ${CONDA_ROOT}/bin/activate ${CONDA_ROOT}/envs/empty &> /dev/nullnel mio .bashrce sembra funzionare bene.
cel

1
Penso che .bashrcnon sia eseguito come uno script, ma proveniente dalla nuova shell, quindi non è possibile verificarlo eseguendo uno script bash.
cel

3
@ user2734434 il file bashrc viene fornito all'inizio della sessione, quindi se lo si inserisce source activate, influirà sull'ambiente shell.
asmeurer,

Risposte:


86

Se vuoi solo passare a un altro ambiente, usa

source activate environment-name

(puoi creare environment-namecon `conda create)


In genere è meglio creare solo nuovi ambienti. Tuttavia, se vuoi davvero cambiare la versione di Python nell'ambiente predefinito , puoi farlo come segue:

Innanzitutto, assicurati di avere l'ultima versione di conda eseguendo

conda update conda

Quindi corri

conda install python=3.5

Questo tenterà di aggiornare tutti i pacchetti nell'ambiente root alle versioni di Python 3. Se ciò non è possibile (ad es. Perché alcuni pacchetti non sono creati per Python 3.5), verrà visualizzato un messaggio di errore che indica quali pacchetti hanno causato il problema.

Se hai installato pacchetti con pip, dovrai reinstallarli.


1
@flutefreak In realtà funzionerà su Windows ora (esegui conda update condaprima per assicurarti di avere l'ultima versione). Aggiornerò la risposta.
asmeurer,

126
Questa risposta non sembra connettersi alla domanda, che riguarda la modifica dell'ambiente predefinito.
Bob,

16
@asmeurer Ma non è quello che è stato chiesto. Non vuole aggiornare i pacchetti in nessun ambiente. Vuole rendere py34 l'ambiente predefinito, per essere attivo senza intervento, quindi py34 è attivo prima di inviare il comando "source activ".
Bob,

20
Devo essere d'accordo con @Bob qui. I pacchetti nell'ambiente root verranno aggiornati alla 3.5 e questo potrebbe aver risolto il problema specifico del poster originale. Ma quando apri un prompt sarai ancora nell'ambiente root, quindi non hai specificato un altro ambiente predefinito. Dal momento che tutti coloro che vogliono raggiungere questo obiettivo e ottengono su Google una domanda, sarebbe meglio se anche alle domande originali venisse data una risposta. Forse non è possibile modificare il valore predefinito env in qualcosa di diverso da root?
Arjan,

4
Questo non funziona per me. Il mio default è python 3.4, usando il flag python=3.5non ho aggiornato python da 3.4 a 3.5 ... Qualche suggerimento?
WillZ,

56

Panoramica
Alcune persone hanno più ambienti Anaconda con diverse versioni di Python per motivi di compatibilità. In questo caso, dovresti avere uno script che imposta l'ambiente predefinito. Con questo metodo, puoi preservare le versioni di Python che usi nei tuoi ambienti.

Di seguito si presuppone che nome_ambiente sia il nome del proprio ambiente

Mac / Linux:
modifica il tuo profilo bash in modo che sia l'ultima riga source activate environment_name. In Mac OSX questo è ~ / .bash_profile, in altri ambienti potrebbe essere ~ / .bashrc

Esempio:
ecco come l'ho fatto su Mac OSX

  1. Apri Terminale e digita:

    nano ~/.bash_profile

  2. Vai alla fine del file e digita quanto segue, dove "p3.5" è il mio ambiente:

    source activate p3.5

  3. Esci dal file. Avvia una nuova finestra del terminale.

  4. Digitare quanto segue per vedere quale ambiente è attivo

    conda info -e

Il risultato mostra che sto usando il mio ambiente p3.5 per impostazione predefinita.

Per Windows:
creare un file di comando (.cmd) con activate environment_namee seguire queste istruzioni per eseguirlo ogni volta che si apre un prompt dei comandi

  1. Creare un comando di file batch, ad esempio "my_conda.cmd", inserirlo nella cartella Dati applicazioni.
  2. Configuralo per l'avvio automatico ogni volta che apri cmd. Questa impostazione è nel Registro di sistema:
    chiave: HKCU \ SOFTWARE \ Microsoft \ Command
    Valore del processore :
    Tipo di esecuzione automatica :
    dati REG_EXPAND_SZ : "% AppData% \ my_conda.cmd"

da questa risposta: https://superuser.com/a/302553/143794


1
Grazie mille. Ho scoperto che con la mia versione di Mac non riesco a liberarmi di Python 2, quindi ho seguito l'azione consigliata per impostare due ambienti separati, ma è stato molto fastidioso dover ricordare di attivare l'ambiente su ogni nuova finestra del terminale. Questo funziona!
Livvy Jeffs,

Questo porta a un tubo rotto e prompt dei comandi congelati quando lo faccio in Windows 10.
aaronsnoswell

Qualcuno su Windows 10 ha più fortuna con questo?
Wassadamo,

3
Questa dovrebbe essere la risposta accettata (almeno per Conda basata su unix)!
Simon Van Machin,

50

Sotto Linux c'è un modo più semplice per impostare l'ambiente predefinito modificando ~/.bashrco ~/.bash_profile Alla fine troverai qualcosa di simile

# added by Anaconda 2.1.0 installer
export PATH="~/anaconda/bin:$PATH"

Sostituiscilo con

# set python3 as default
export PATH="~/anaconda/envs/python3/bin:$PATH"

e questo è tutto ciò che c'è da fare.


3
E qual è la domanda?
Dieter Meemken,

Ho provato questa soluzione, ma mostra ancora anaconda2 sul mio percorso, qualche idea?
William Ross,

10
Questo non imposta l'ambiente predefinito. Sembra eludere il conda e finge di pensare che "python3" sia il valore predefinito. "conda info -e" mostra ancora "root" come ambiente corrente. Sto ancora cercando un modo per dire conda che è l'impostazione predefinita.
MrMas,

8
Questo non imposta l'ambiente predefinito dal punto di vista della conda. Sembra eludere il conda e finge di pensare che "python3" sia il valore predefinito. "conda info -e" mostra ancora "root" come ambiente corrente. Per risolvere questo problema, devi anche impostare CONDA_PREFIX e CONDA_DEFAULT_ENV. Anche allora, le risposte sono ancora un trucco; perché non eseguire semplicemente 'source activ <nuovo ambiente predefinito>' poiché questo è già fornito con conda come il modo "incorporato" per raggiungere questo obiettivo.
MrMas,

C'è un .bashrco .bash_profilesu Windows 10? Ne ho trovato uno su Cygwin mentre seguivo questo jattenberg.github.io/PDS-Fall-2013/assets/install/… . Ma non sono sicuro che sia ciò che dovrei cambiare per ottenere la funzionalità desiderata dell'OP.
Wassadamo,

14

Per Windows Anaconda viene fornito con Anaconda Prompt che è una scorciatoia per cmd e può essere utilizzato per eseguire comandi conda senza aggiungere anaconda nella variabile PATH. Trova la sua posizione, copia e rinomina la copia (ad esempio myenv_prompt). Fare clic con il tasto destro del mouse su myenv_prompt e selezionare le proprietà nel menu di scelta rapida.

inserisci qui la descrizione dell'immagine

La finestra Target della forma Proprietà dovrebbe già essere riempita con del testo, qualcosa di simile %windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\ Ci sono tre parti di questo comando 1) start ... \ cmd.exe 2) run ... \ acitvate.bat con ambiente 3) ... \ Miniconda3 \

Cambia la terza parte nel percorso dell'ambiente (ad esempio myenv) che desideri come predefinito, ad esempio riempi il modulo Target in modo simile%windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\envs\myenv

Ora myenv_prompt fungerà da collegamento per avviare cmd con myenv come ambiente predefinito per Python. Questa scorciatoia è possibile mantenere nel menu di avvio o appuntata nella barra delle applicazioni.

Un vantaggio di questo metodo è che è possibile creare alcune scorciatoie ognuna con un ambiente diverso come ambiente predefinito. Inoltre è possibile impostare la cartella predefinita compilando Start nel modulo della finestra Proprietà

Spero che questo ti aiuti

PS: Non è necessario trovare Anaconda Prompt e può essere fatto cambiando target di qualsiasi scorciatoia. Ma dovrai conoscere il percorso di cmd.exe e activ.bat


2
Questa dovrebbe essere la risposta migliore
James McCormac,

Uso questo metodo, ma la mia prima parte è un po 'diversa: C:\Windows\System32\cmd.exe /c start ""non sono sicuro di come sono arrivato a quella soluzione, ma ecco un post che ho
scritto

8

Cambia permanente

conda install python={version}

Cambia temporaneamente

Visualizza i tuoi ambienti

eseguire conda info --envssulla finestra del terminale o su un prompt di Anconda

Se non mostra l'ambiente che si desidera installare

corri conda create -n py36 python=3.6 anacondaper python 3.6 cambia la versione come preferisci

Attivazione di un ambiente (utilizzare il prompt Anaconda)

esegui activate envnmeenvnme puoi trovare questo comando conda info --envscome esempio quando lo esegui conda info --envsshow

base * C:\Users\DulangaHeshan\Anaconda3 py36 C:\Users\DulangaHeshan\Anaconda3\envs\py36

quindi corri activate py36

per controllare l'esecuzione python --version

In Windows, è buona norma disattivare un ambiente prima di attivarne un altro. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?highlight=deactivate%20environment


3
Penso che l'OP voglia una soluzione che cambi l'ambiente di base in py36, quindi non devono essere eseguiti activate py36ogni volta all'avvio.
Wassadamo,

6

La risposta corretta (a partire da dicembre 2018) è ... non puoi. L'aggiornamento conda install python=3.6potrebbe funzionare, ma potrebbe non essere se si dispone di pacchetti necessari, ma che non possono essere disinstallati.

Anaconda utilizza un ambiente predefinito denominato basee non è possibile creare un nuovo ambiente (ad esempio python 3.6) con lo stesso nome. Questo è intenzionale. Se vuoi che la tua base Anaconda sia python 3.6, il modo giusto per farlo è installare Anaconda per python 3.6. Come gestore di pacchetti, l'obiettivo di Anaconda è quello di incapsulare diversi ambienti, quindi perché è necessario attivare l'attivazione in essi e perché non si può semplicemente cambiare il pacchetto di base a piacimento poiché ciò potrebbe portare a molti problemi sui sistemi di produzione.


Cosa succede se il mio ambiente di base è rotto e voglio sostituirlo con uno che funziona?
endolito

@endolith Cosa succede se il mio ambiente di base è rotto e voglio sostituirlo con uno che funziona? Reinstalla Conda.
AMC,

@AMC L'ho reinstallato tante volte. Voglio un modo per recuperare un buono stato senza ripetere tutto
endolith

1
@endolith Hai reinstallato più volte per risolvere lo stesso problema esatto? Come è finito? Dovremmo discuterne altrove, ho creato una chat room .
AMC,

1

Non ero soddisfatto delle risposte presentate qui, poiché l'attivazione di un ambiente richiede alcuni secondi sulla mia piattaforma (per qualsiasi motivo)

Ho modificato la mia variabile di percorso in modo che l'ambiente desiderato come predefinito abbia la priorità rispetto al valore predefinito effettivo.

Nel mio caso ho usato i seguenti comandi per eseguire quello per l'ambiente "py35":

setx PATH "%userprofile%\Anaconda3\envs\py35\;%PATH%"
setx PATH "%userprofile%\Anaconda3\envs\py35\Scripts;%PATH%"

per scoprire dove è archiviato il tuo ambiente, attivalo ed entra where python. Non sono ancora sicuro se questo approccio ha degli aspetti negativi. Dal momento che cambia anche il percorso predefinito dell'eseguibile conda. In tal caso, si prega di commentare.


1

Ho ottenuto questo durante l'installazione di una libreria utilizzando anaconda. La mia versione è passata da Python 3. * a 2.7 e molte delle mie cose hanno smesso di funzionare. La migliore soluzione che ho trovato è stata la prima a vedere la versione più recente disponibile:

conda search python

Quindi aggiorna alla versione desiderata:

conda install python=3.*.*

Fonte: http://chris35wills.github.io/conda_python_version/

Altri comandi utili:

conda info
python --version

La mia versione è passata da Python 3. * a 2.7 e molte delle mie cose hanno smesso di funzionare. A meno che non mi manchi qualcosa, questo non sembra essere correlato alla domanda e a ciò che è descritto nel PO.
AMC,

0

Crea un collegamento del prompt di anaconda sul desktop o sulla barra delle applicazioni, quindi nelle proprietà di quel collegamento assicurati di modificare l'ultimo percorso in "Target:" al percorso del tuo ambiente:

C: \ Users \ BenBouali \ Anaconda3 \ CAMBIERÀ IN C: \ Users \ BenBouali \ Anaconda3 \ envs \ tensorflow-gpu

anteprima

e in questo modo puoi usare quel collegamento per aprire un determinato ambiente quando fai clic su di esso, puoi aggiungerlo anche al tuo percorso e ora sarai in grado di eseguirlo dalla finestra di esecuzione di Windows semplicemente digitando il nome del collegamento.


0

Su Windows, crea un file batch con la seguente riga al suo interno:

start cmd /k "C:\Anaconda3\Scripts\activate.bat C:\Anaconda3 & activate env"

Il primo percorso contenuto tra virgolette è il percorso del file activ.bat nell'installazione di Anaconda. Il percorso sul tuo sistema potrebbe essere diverso. Il nome che segue il comando di attivazione ovviamente dovrebbe essere il nome dell'ambiente desiderato.

Quindi eseguire il file batch quando è necessario aprire un prompt di Anaconda.


0

Carica il tuo ambiente "base" - come OP py34- quando carichi il tuo terminale / shell.

Se usi Bash, metti la linea:

conda activate py34

nel tuo .bash_profile(o .bashrc):

$ echo 'conda activate py34' >> ~/.bash_profile

Ogni volta che si esegue un nuovo terminale, l'ambiente conda py34verrà caricato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.