Como alterar o ambiente padrão do python Anaconda

170

Instalei o Anaconda e criei dois ambientes extras: py3k (que contém o Python 3.3) e py34 (que contém o Python 3.4). Além desses, eu tenho um ambiente padrão chamado 'root', que o instalador do Anaconda criou por padrão e que contém o Python 2.7. Este último é o padrão, sempre que inicio o 'ipython' a partir do terminal, ele me dá a versão 2.7. Para trabalhar com o Python 3.4, preciso emitir os comandos (no shell)

source activate py34
ipython

que alteram o ambiente padrão para Python 3.4. Isso funciona bem, mas é irritante, pois na maioria das vezes eu trabalho no Python 3.4, em vez do Python 2.7 (que eu tenho para fins de ensino, é uma história bastante longa). De qualquer forma, gostaria de saber como alterar o ambiente padrão para o Python 3.4, tendo em mente que não quero reinstalar tudo do zero.

user2734434
fonte
7
você já pensou source activate py34em usar no seu .bashrc?
cel
1
Obrigado pela sua resposta. Eu não tentei porque acho que não é possível chamar a ativação de origem a partir de um script bash, pois o comando de origem precisa ser executado no mesmo shell, não em um subshell. Eu tentei colocar as duas linhas acima em um script bash, e isso eu posso dizer que não funciona.
User2734434
4
Eu tenho CONDA_ROOT="/Users/bla/miniconda"e source ${CONDA_ROOT}/bin/activate ${CONDA_ROOT}/envs/empty &> /dev/nullno meu .bashrce parece funcionar bem.
10285
1
Eu acho que .bashrcnão é executado como um script, mas originado pelo novo shell, portanto, você não pode verificá-lo executando um script bash.
cel
3
@ user2734434 o arquivo bashrc é originado no início da sessão; portanto, se você o incluir source activate, afetará o ambiente do shell.
asmeurer

Respostas:

86

Se você quiser apenas mudar para outro ambiente, use

source activate environment-name

(você pode criar environment-namecom `conda create)


Normalmente, é melhor apenas criar novos ambientes. No entanto, se você realmente deseja alterar a versão do Python no ambiente padrão , pode fazer o seguinte:

Primeiro, verifique se você tem a versão mais recente do conda executando

conda update conda

Então corra

conda install python=3.5

Isso tentará atualizar todos os seus pacotes no seu ambiente raiz para as versões do Python 3. Se não for possível (por exemplo, porque alguns pacotes não foram criados para o Python 3.5), você receberá uma mensagem de erro indicando quais pacotes causaram o problema.

Se você instalou pacotes com o pip, precisará reinstalá-los.

asmeurer
fonte
1
@flutefreak Na verdade, ele funcionará no Windows agora (execute conda update condaprimeiro para garantir que você tenha a versão mais recente). Vou atualizar a resposta.
asmeurer
126
Esta resposta parece não se conectar à pergunta, que é sobre como alterar o ambiente padrão.
Bob
16
@asmeurer Mas não foi isso que foi perguntado. Ele não quer atualizar pacotes em nenhum ambiente. Ele quer tornar py34 o ambiente padrão, para estar ativo sem intervenção, portanto py34 está ativo antes de enviar o comando "source enable".
Bob
20
Eu tenho que concordar com o @Bob aqui. Os pacotes no ambiente raiz serão atualizados para 3.5 e isso pode ter resolvido o problema específico do pôster original. Mas quando você abre um prompt, você ainda estará no ambiente raiz, portanto não especificou outro ambiente padrão. Como todo mundo que quer alcançar isso e pesquisar no Google acaba com essa pergunta, seria melhor se as perguntas originais também fossem respondidas. Talvez não seja possível alterar o env padrão para algo diferente de root?
Arjan #
4
Isso não funciona para mim. Meu padrão é python 3.4, o uso da bandeira python=3.5não atualizou o python de 3.4 para 3.5 ... Alguma sugestão?
Willz
56

Visão geral
Algumas pessoas têm vários ambientes Anaconda com diferentes versões do python por motivos de compatibilidade. Nesse caso, você deve ter um script que defina seu ambiente padrão. Com esse método, você pode preservar as versões do python usadas em seus ambientes.

A seguir, assume nome_do_ambiente é o nome do seu ambiente

Mac / Linux:
edite seu perfil do bash para que a última linha seja source activate environment_name. No Mac OSX, é ~ / .bash_profile; em outros ambientes, pode ser ~ / .bashrc

Exemplo:
Veja como eu fiz isso no Mac OSX

  1. Abra o Terminal e digite:

    nano ~/.bash_profile

  2. Vá para o final do arquivo e digite o seguinte, onde "p3.5" é o meu ambiente:

    source activate p3.5

  3. Sair do arquivo. Inicie uma nova janela do terminal.

  4. Digite o seguinte para ver qual ambiente está ativo

    conda info -e

O resultado mostra que estou usando meu ambiente p3.5 por padrão.

Para Windows:
Crie um arquivo de comando (.cmd) activate environment_namee siga estas instruções para executá-lo sempre que abrir um prompt de comando

  1. Crie um comando de arquivo em lotes, por exemplo "my_conda.cmd", coloque-o na pasta Dados do Aplicativo.
  2. Configure-o para ser iniciado automaticamente sempre que você abrir cmd. Essa configuração está no Registro:
    chave: HKCU \ SOFTWARE \ Microsoft \ Command
    Valor do processador :
    Tipo de
    execução automática : REG_EXPAND_SZ dados: "% AppData% \ my_conda.cmd"

a partir desta resposta: https://superuser.com/a/302553/143794

FistOfFury
fonte
1
Muito obrigado. Eu descobri que, com a minha versão do Mac, não consigo me livrar do Python 2 - por isso segui a ação recomendada para configurar dois ambientes separados, mas era muito irritante ter que lembrar de ativar o ambiente em todas as novas janelas de terminal. Isso funciona!
Livvy Jeffs
Isto leva a um cano quebrado e comando congelada pronta quando eu faço isso no Windows 10.
aaronsnoswell
Alguém no Windows 10 tem mais sorte com isso?
Wassadamo 22/11/19
3
Essa deve ser a resposta aceita (pelo menos para o Conda baseado em unix)!
Simon Van Machin
50

No Linux, existe uma maneira mais fácil de definir o ambiente padrão, modificando ~/.bashrcou ~/.bash_profile No final, você encontrará algo como

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

Substitua por

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

e é tudo o que há para isso.

Jev
fonte
3
E qual é a questão?
Dieter Meemken
Eu tentei esta solução, mas ainda mostra anaconda2 no meu caminho, alguma idéia?
William Ross
10
Isso não define o ambiente padrão. Parece contornar o conda e fingir que pensa que "python3" é o padrão. "conda info -e" ainda mostra "root" como o ambiente atual. Ainda estou procurando uma maneira de dizer ao conda qual é o padrão.
MrMas
8
Isso não define o ambiente padrão da perspectiva da conda. Parece contornar o conda e fingir que pensa que "python3" é o padrão. "conda info -e" ainda mostra "root" como o ambiente atual. Para corrigir isso, você também precisa definir CONDA_PREFIX e CONDA_DEFAULT_ENV. Mesmo assim, as respostas ainda são um hack; por que não apenas executar 'source enable <new default environment>', já que isso já é fornecido com o conda como a maneira "integrada" de fazer isso.
MrMas
Existe um .bashrcou .bash_profileno Windows 10? Encontrei um no cygwin ao seguir este jattenberg.github.io/PDS-Fall-2013/assets/install/… . Mas não tenho certeza se é o que devo mudar para obter a funcionalidade desejada do OP.
Wassadamo 22/11/19
14

Para janelas, o Anaconda vem com o Anaconda Prompt, que é um atalho para o cmd e pode ser usado para executar comandos conda sem adicionar o anaconda na variável PATH. Encontre o local, copie e renomeie a cópia (por exemplo, myenv_prompt). Clique com o botão direito do mouse em myenv_prompt e selecione propriedades no menu de contexto.

insira a descrição da imagem aqui

A janela Destino da janela Propriedades já deve estar preenchida com texto, algo como %windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\ Existem três partes deste comando 1) iniciar ... \ cmd.exe 2) executar ... \ acitvate.bat com ambiente 3) ... \ Miniconda3 \

Altere a 3ª parte para o caminho do ambiente (por exemplo, myenv) que você deseja como padrão, ou seja, preencha o formulário Alvo 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

Agora myenv_prompt atuará como atalho para iniciar o cmd com myenv como o ambiente padrão para python. Este atalho pode ser mantido no menu Iniciar ou fixado na barra de tarefas.

Uma vantagem desse método é que você pode criar alguns atalhos, cada um com um ambiente diferente como ambiente padrão. Além disso, você pode definir a pasta padrão preenchendo Iniciar no formulário da janela Propriedades

Espero que isto ajude

PS: Não é necessário encontrar o Anaconda Prompt e isso pode ser feito alterando o destino de qualquer atalho. Mas você precisará conhecer o caminho do cmd.exe e o enable.bat

Kushdesh
fonte
2
Esta deve ser a resposta superior
James McCormac
I utilizar este método, mas a minha primeira parte é um pouco diferente: C:\Windows\System32\cmd.exe /c start ""Não tenho certeza como cheguei a essa solução, mas aqui está um post que fiz sobre ele de sintaxe
xtian
8

Alterar permanente

conda install python={version}

Alterar temporariamente

Veja seus ambientes

execute conda info --envsna janela do terminal ou em um prompt do Anconda

Se não mostrar o ambiente que você deseja instalar

corra conda create -n py36 python=3.6 anacondapara a versão de mudança python 3.6 como preferir

Ativando um ambiente (use o prompt do Anaconda)

execute activate envnmeenvnme você pode encontrar por este comando conda info --envscomo um exemplo quando você o executa conda info --envsshow

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

então corra activate py36

verificar executar python --version

No Windows, é uma boa prática desativar um ambiente antes de ativar outro. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?highlight=deactivate%20environment

Dulanga Heshan
fonte
3
Eu acho que o OP quer uma solução que altere o ambiente base para py36, para que eles não precisem ser executados activate py36todas as vezes na inicialização.
Wassadamo 22/11
6

A resposta correta (em dezembro de 2018) é ... você não pode. A atualização conda install python=3.6pode funcionar, mas pode não ocorrer se você tiver pacotes necessários, mas não puder ser desinstalado.

O Anaconda usa um ambiente padrão chamado basee você não pode criar um novo ambiente (por exemplo, python 3.6) com o mesmo nome. Isso é intencional. Se você deseja que o Anaconda base seja o python 3.6, a maneira correta de fazer isso é instalar o Anaconda for python 3.6. Como um gerenciador de pacotes, o objetivo do Anaconda é encapsular diferentes ambientes, portanto, por que você deve ativá-los na origem e por que não pode alternar silenciosamente o pacote básico à vontade, pois isso pode levar a muitos problemas nos sistemas de produção.

cgnorthcutt
fonte
E se meu ambiente base estiver quebrado e eu quiser substituí-lo por um que funcione?
endolith
@ endolith E se o meu ambiente base estiver quebrado e eu quiser substituí-lo por um que funcione? Reinstale o Conda.
AMC
@ AMC Eu reinstalei tantas vezes. Eu quero uma maneira de recuperar um bom estado sem refazer tudo
endolith 10/06
1
@ endolith Você reinstalou várias vezes para corrigir o mesmo problema exato? Como isso acabou quebrado? Deveríamos discutir isso em outro lugar, criei uma sala de bate - papo .
AMC
1

Não fiquei satisfeito com nenhuma das respostas apresentadas aqui, pois a ativação de um ambiente leva alguns segundos na minha plataforma (por qualquer motivo)

Modifiquei minha variável de caminho para que o ambiente que eu quero como padrão tenha prioridade sobre o padrão real.

No meu caso, usei os seguintes comandos para realizar isso no ambiente "py35":

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

para descobrir onde seu ambiente está armazenado, ative-o e insira where python. Ainda não tenho certeza se essa abordagem tem alguma desvantagem. Uma vez que também altera o caminho padrão do executável conda. Se for esse o caso, comente.

dominik andreas
fonte
1

Consegui isso ao instalar uma biblioteca usando o anaconda. Minha versão foi do Python 3. * para 2.7 e muitas coisas pararam de funcionar. A melhor solução que encontrei foi ver primeiro a versão mais recente disponível:

conda search python

Atualize para a versão desejada:

conda install python=3.*.*

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

Outros comandos úteis:

conda info
python --version
Brad123
fonte
Minha versão foi do Python 3. * para 2.7 e muitas coisas pararam de funcionar. A menos que esteja faltando alguma coisa, isso não parece estar relacionado à pergunta e ao que está descrito no OP.
AMC
0

Crie um atalho do prompt do anaconda na área de trabalho ou na barra de tarefas e, nas propriedades desse atalho, verifique se você modificou o último caminho em "Destino:" para o caminho do seu ambiente:

C: \ Usuários \ BenBouali \ Anaconda3 \ ALTERARÁ EM C: \ Usuários \ BenBouali \ Anaconda3 \ envs \ tensorflow-gpu

pré-visualização

e dessa forma, você pode usar esse atalho para abrir um determinado ambiente ao clicar nele, você pode adicioná-lo ao seu caminho também e agora poderá executá-lo na caixa de execução do Windows digitando apenas o nome do atalho.

Kream
fonte
0

No Windows, crie um arquivo em lotes com a seguinte linha:

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

O primeiro caminho contido nas aspas é o caminho para o arquivo enable.bat na instalação do Anaconda. O caminho no seu sistema pode ser diferente. O nome após o comando ativar, é claro, deve ser o nome do ambiente desejado.

Em seguida, execute o arquivo em lotes quando precisar abrir um prompt do Anaconda.

Fijoy Vadakkumpadan
fonte
0

Carregue seu ambiente "base" - como OP py34- quando você carregar seu terminal / shell.

Se você usa o Bash, coloque a linha:

conda activate py34

no seu .bash_profile(ou .bashrc):

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

Sempre que você executar um novo terminal, o ambiente conda py34será carregado.

Brandt
fonte