Cómo cambiar el entorno predeterminado de Anaconda python

170

Instalé Anaconda y creé dos entornos adicionales: py3k (que contiene Python 3.3) y py34 (que contiene Python 3.4). Además de eso, tengo un entorno predeterminado llamado 'root' que el instalador de Anaconda creó de manera predeterminada y que contiene Python 2.7. Este último es el predeterminado, cada vez que inicio 'ipython' desde el terminal me da la versión 2.7. Para trabajar con Python 3.4, necesito emitir los comandos (en el shell)

source activate py34
ipython

que cambian el entorno predeterminado a Python 3.4. Esto funciona bien, pero es molesto ya que la mayoría de las veces trabajo en Python 3.4, en lugar de Python 2.7 (que sostengo con fines de enseñanza, es una historia bastante larga). De todos modos, me gustaría saber cómo cambiar el entorno predeterminado a Python 3.4, teniendo en cuenta que no quiero reinstalar todo desde cero.

usuario2734434
fuente
77
has considerado usar source activate py34en tu .bashrc?
cel
1
Gracias por tu respuesta. No lo he intentado porque creo que no es posible llamar a la activación de origen desde un script bash, ya que el comando de origen debe ejecutarse en el mismo shell, no en un subshell. He intentado poner las dos líneas anteriores en un script bash, y eso puedo decir que no funciona.
user2734434
44
Tengo CONDA_ROOT="/Users/bla/miniconda"y source ${CONDA_ROOT}/bin/activate ${CONDA_ROOT}/envs/empty &> /dev/nullen mi .bashrcy parece funcionar bien.
cel
1
Creo que .bashrcno se ejecuta como un script, sino que proviene del nuevo shell, por lo tanto, no puede verificarlo ejecutando un script bash.
cel
3
@ user2734434 el archivo bashrc se obtiene al comienzo de la sesión, por lo que si lo coloca source activate, afectará el entorno del shell.
asmeurer

Respuestas:

86

Si solo desea cambiar a otro entorno, use

source activate environment-name

(puede crear environment-namecon `conda create)


Por lo general, lo mejor es crear nuevos entornos. Sin embargo, si realmente desea cambiar la versión de Python en el entorno predeterminado , puede hacerlo de la siguiente manera:

Primero, asegúrese de tener la última versión de conda ejecutando

conda update conda

Entonces corre

conda install python=3.5

Esto intentará actualizar todos sus paquetes en su entorno raíz a las versiones de Python 3. Si no es posible (p. Ej., Porque algún paquete no está creado para Python 3.5), le dará un mensaje de error que le indicará qué paquete (s) causó el problema.

Si instaló paquetes con pip, deberá reinstalarlos.

asmeurer
fuente
1
@flutefreak Realmente funcionará en Windows ahora (ejecuta conda update condaprimero para asegurarte de que tienes la última versión). Actualizaré la respuesta.
asmeurer el
126
Esta respuesta no parece conectarse con la pregunta, que trata sobre cambiar el entorno predeterminado.
Bob
16
@asmeurer Pero eso no es lo que se ha pedido. No quiere actualizar paquetes en ninguna env. Quiere que py34 sea el entorno predeterminado, para que esté activo sin intervención, por lo que py34 está activo antes de enviar el comando "activar fuente".
Bob
20
Tengo que estar de acuerdo con @Bob aquí. Los paquetes en el entorno raíz se actualizarán a 3.5, y esto puede haber resuelto el problema específico del póster original. Pero cuando abra una solicitud, seguirá estando en el entorno raíz, por lo que no ha especificado otro entorno predeterminado. Como todos los que quieren lograr esto y buscan en Google termina en esta pregunta, sería mejor si las preguntas originales también fueran respondidas. ¿Quizás no sea posible cambiar el entorno predeterminado a algo distinto de root?
arjan
44
Esto no funciona para mi. Mi valor predeterminado es python 3.4, el uso de la bandera python=3.5no actualizó python de 3.4 a 3.5 ... ¿Alguna sugerencia?
WillZ
56

Descripción general
Algunas personas tienen múltiples entornos Anaconda con diferentes versiones de python por razones de compatibilidad. En este caso, debe tener un script que establezca su entorno predeterminado. Con este método, puede conservar las versiones de Python que usa en sus entornos.

Lo siguiente asume environment_name es el nombre de su entorno

Mac / Linux:
Edite su perfil bash para que la última línea sea source activate environment_name. En Mac OSX esto es ~ / .bash_profile, en otros entornos puede ser ~ / .bashrc

Ejemplo: así
es como lo hice en Mac OSX

  1. Abra la Terminal y escriba:

    nano ~/.bash_profile

  2. Vaya al final del archivo y escriba lo siguiente, donde "p3.5" es mi entorno:

    source activate p3.5

  3. Salir del archivo. Comience una nueva ventana de terminal.

  4. Escriba lo siguiente para ver qué entorno está activo

    conda info -e

El resultado muestra que estoy usando mi entorno p3.5 por defecto.

Para Windows:
cree un archivo de comando (.cmd) con activate environment_namey siga estas instrucciones para que se ejecute cada vez que abra un símbolo del sistema

  1. Cree un comando de archivo por lotes, por ejemplo, "my_conda.cmd", póngalo en la carpeta Datos de la aplicación.
  2. Configure que se inicie automáticamente cada vez que abra cmd. Esta configuración está en el Registro:
    clave: HKCU \ SOFTWARE \ Microsoft \ Command
    Valor del procesador :
    Tipo de ejecución automática :
    datos REG_EXPAND_SZ : "% AppData% \ my_conda.cmd"

de esta respuesta: https://superuser.com/a/302553/143794

Puño de la furia
fuente
1
Muchas gracias. Descubrí que con mi versión de Mac no puedo deshacerme de Python 2, así que seguí la acción recomendada para configurar dos entornos separados, pero fue muy molesto tener que recordar activar el entorno en cada nueva ventana de terminal. ¡Esto funciona!
Livvy Jeffs
Esto lleva a una tubería rota y un símbolo del sistema congelado cuando hago esto en Windows 10.
aaronsnoswell
¿Alguien en Windows 10 tiene mejor suerte con esto?
Wassadamo
3
¡Esta debería ser la respuesta aceptada (al menos para Conda basada en Unix)!
Simon Van Machin
50

En Linux hay una manera más fácil de configurar el entorno predeterminado modificando ~/.bashrco ~/.bash_profile Al final encontrarás algo como

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

Reemplácelo con

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

y eso es todo lo que hay que hacer.

Jev
fuente
3
¿Y cuál es la pregunta?
Dieter Meemken
Intenté esta solución, pero aún muestra anaconda2 en mi camino, ¿alguna idea?
William Ross el
10
Esto no establece el entorno predeterminado. Parece eludir a Conda y simula que "python3" es el valor predeterminado. "conda info -e" todavía muestra "root" como el entorno actual. Todavía estoy buscando una manera de decirle a conda cuál es el valor predeterminado.
MrMas
8
Esto no establece el entorno predeterminado desde la perspectiva de conda. Parece eludir a Conda y simula que "python3" es el valor predeterminado. "conda info -e" todavía muestra "root" como el entorno actual. Para solucionar esto, también debe establecer CONDA_PREFIX y CONDA_DEFAULT_ENV. Incluso entonces, las respuestas siguen siendo un truco; ¿por qué no simplemente ejecutar 'source enable <nuevo entorno predeterminado>' ya que esto ya se proporciona con conda como la forma "incorporada" de lograr esto?
MrMas
¿Hay un .bashrco .bash_profileen Windows 10? Encontré uno debajo de cygwin mientras seguía este jattenberg.github.io/PDS-Fall-2013/assets/install/… . Pero no estoy seguro de que sea lo que debería cambiar para obtener la funcionalidad deseada del OP.
Wassadamo
14

Para Windows, Anaconda viene con Anaconda Prompt, que es un acceso directo a cmd y se puede usar para ejecutar comandos conda sin agregar anaconda en la variable PATH. Encuentre la ubicación, copie y cambie el nombre de la copia (por ejemplo, myenv_prompt). Haga clic derecho en myenv_prompt y seleccione propiedades en el menú contextual.

ingrese la descripción de la imagen aquí

El formulario Destino de la ventana Propiedades ya debería estar lleno de texto, algo así como %windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\ Hay tres partes de este comando 1) iniciar ... \ cmd.exe 2) ejecutar ... \ acitvate.bat con el entorno 3) ... \ Miniconda3 \

Cambie la tercera parte a la ruta del entorno (por ejemplo, myenv) que desee de forma predeterminada, es decir, complete el formulario de destino algo así como%windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\envs\myenv

Ahora myenv_prompt actuará como acceso directo para iniciar cmd con myenv como el entorno predeterminado para python. Este acceso directo lo puede mantener en el menú de inicio o anclado en la barra de tareas.

Una ventaja de este método es que puede crear algunos accesos directos cada uno con un entorno diferente como entorno predeterminado. También puede establecer la carpeta predeterminada completando Inicio en el formulario de la ventana Propiedades

Espero que esto ayude

PD: no es necesario encontrar Anaconda Prompt y se puede hacer cambiando el objetivo de cualquier acceso directo. Pero deberá conocer la ruta de cmd.exe y activar.bat

Kushdesh
fuente
2
Esta debería ser la respuesta principal
James McCormac, el
Uso este método, pero mi primera parte es un poco diferente: C:\Windows\System32\cmd.exe /c start ""no estoy seguro de cómo llegué a esa solución, pero aquí hay una publicación que hice sobre su sintaxis
xtian
8

Cambio permanente

conda install python={version}

Cambiar temporalmente

Ver tus entornos

ejecutar conda info --envsen la ventana de su terminal o un mensaje de Anconda

Si no muestra el entorno que desea instalar

ejecuta la conda create -n py36 python=3.6 anacondaversión de cambio de Python 3.6 como prefieras

Activación de un entorno (use el indicador de Anaconda)

ejecute activate envnmeenvnme que puede encontrar con este comando conda info --envscomo ejemplo cuando lo ejecuta conda info --envsmostrar

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

entonces corre activate py36

para comprobar correr python --version

En Windows, es una buena práctica desactivar un entorno antes de activar otro. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?highlight=deactivate%20environment

Dulanga Heshan
fuente
3
Creo que el OP quiere una solución que cambie el entorno base a py36 para que no tengan que ejecutarse activate py36siempre en el inicio.
Wassadamo
6

La respuesta correcta (a partir de diciembre de 2018) es ... no puedes. La actualización conda install python=3.6puede funcionar, pero podría no funcionar si tiene paquetes que son necesarios, pero no se pueden desinstalar.

Anaconda utiliza un entorno predeterminado llamado basey no puede crear un nuevo entorno (por ejemplo, Python 3.6) con el mismo nombre. Esto es intencional Si desea que su Anaconda base sea Python 3.6, la forma correcta de hacerlo es instalar Anaconda para Python 3.6. Como administrador de paquetes, el objetivo de Anaconda es encapsular diferentes entornos, por lo tanto, debe activarlos en origen y no puede cambiar silenciosamente el paquete base a voluntad, ya que esto podría generar muchos problemas en los sistemas de producción.

cgnorthcutt
fuente
¿Qué pasa si mi entorno base está roto y quiero reemplazarlo por uno que funcione?
Endolito
@endolith ¿Qué sucede si mi entorno base está roto y quiero reemplazarlo por uno que funcione? Vuelva a instalar Conda.
AMC
@AMC He reinstalado tantas veces. Quiero una forma de recuperar un buen estado sin rehacer todo
endolito
1
@endolith ¿Has reinstalado varias veces para solucionar el mismo problema exacto? ¿Cómo terminó roto? Deberíamos discutir esto en otra parte, creé una sala de chat .
AMC
1

No estaba satisfecho con ninguna de las respuestas presentadas aquí, ya que activar un entorno lleva unos segundos en mi plataforma (por cualquier razón)

Modifiqué mi variable de ruta para que el entorno que deseo como predeterminado tenga prioridad sobre el valor predeterminado real.

En mi caso, utilicé los siguientes comandos para lograr eso para el entorno "py35":

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

para averiguar dónde está almacenado su entorno, actívelo e ingrese where python. Todavía no estoy seguro si este enfoque tiene alguna desventaja. Dado que también cambia la ruta predeterminada del ejecutable conda. Si ese fuera el caso, por favor comente.

dominik andreas
fuente
1

Obtuve esto al instalar una biblioteca usando anaconda. Mi versión pasó de Python 3. * a 2.7 y muchas de mis cosas dejaron de funcionar. La mejor solución que encontré fue ver primero la versión más reciente disponible:

conda search python

Luego actualice a la versión que desee:

conda install python=3.*.*

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

Otros comandos útiles:

conda info
python --version
Brad123
fuente
Mi versión pasó de Python 3. * a 2.7 y muchas de mis cosas dejaron de funcionar. A menos que me falte algo, esto no parece estar relacionado con la pregunta y lo que se describe en el OP.
AMC
0

Cree un acceso directo del indicador anaconda en el escritorio o la barra de tareas, y luego, en las propiedades de ese acceso directo, asegúrese de modificar la última ruta en "Destino:" a la ruta de su entorno:

C: \ Users \ BenBouali \ Anaconda3 \ CAMBIARÁ EN C: \ Users \ BenBouali \ Anaconda3 \ envs \ tensorflow-gpu

avance

y de esta manera puede usar ese acceso directo para abrir un determinado entorno al hacer clic en él, también puede agregarlo a su ruta y ahora podrá ejecutarlo desde el cuadro de ejecución de Windows simplemente escribiendo el nombre del acceso directo.

Kream
fuente
0

En Windows, cree un archivo por lotes con la siguiente línea:

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

La primera ruta contenida entre comillas es la ruta al archivo enable.bat en la instalación de Anaconda. La ruta en su sistema puede ser diferente. El nombre que sigue al comando de activación, por supuesto, debe ser el nombre del entorno deseado.

Luego, ejecute el archivo por lotes cuando necesite abrir un indicador de Anaconda.

Fijoy Vadakkumpadan
fuente
0

Cargue su entorno "base" - como OP py34- cuando cargue su terminal / shell.

Si usa Bash, ponga la línea:

conda activate py34

en su .bash_profile(o .bashrc):

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

Cada vez que ejecute una nueva terminal, se cargará el entorno conda py34.

Brandt
fuente