Resumo (tldr)
Se você deseja que o kernel 'python3' sempre execute a instalação do Python no ambiente em que é iniciado, exclua o kernel do usuário 'python3', que tem precedência sobre qualquer que seja o ambiente atual:
jupyter kernelspec remove python3
Solução completa
Vou postar uma solução alternativa e mais simples para o seguinte caso:
- Você criou um ambiente conda
- Este ambiente possui o jupyter instalado (que também instala o ipykernel)
- Quando você executa o comando
jupyter notebook
e cria um novo bloco de notas clicando em 'python3' no menu suspenso 'Novo', esse bloco de notas executa o python no ambiente base e não no ambiente atual.
- Você gostaria que o lançamento de um novo notebook com 'python3' em qualquer ambiente execute a versão Python desse ambiente e NÃO a base
Vou usar o nome 'test_env' para o ambiente pelo restante da solução. Além disso, observe que 'python3' é o nome do kernel.
A resposta atualmente mais votada funciona, mas há uma alternativa. Ele diz para fazer o seguinte:
python -m ipykernel install --user --name test_env --display-name "Python (test_env)"
Isso lhe dará a opção de usar o ambiente test_env, independentemente de qual ambiente você iniciar jupyter notebook
. Porém, o lançamento de um notebook com 'python3' ainda utilizará a instalação do Python a partir do ambiente base.
O que provavelmente está acontecendo é que existe um kernel python3 do usuário. Execute o comando jupyter kernelspec list
para listar todos os seus ambientes. Por exemplo, se você tiver um Mac, você receberá o seguinte (meu nome de usuário é Ted).
python3 /Users/Ted/Library/Jupyter/kernels/python3
O que Jupyter está fazendo aqui é pesquisar três caminhos diferentes, procurando kernels. Vai de Usuário , para Env , para Sistema . Consulte este documento para obter mais detalhes sobre os caminhos que ele procura para cada sistema operacional.
Os dois kernels acima estão no caminho do usuário, o que significa que estarão disponíveis independentemente do ambiente em que você iniciar um notebook jupyter. Isso também significa que, se houver outro kernel 'python3' no nível do ambiente, você nunca poderá acessá-lo.
Para mim, faz mais sentido que escolher o kernel 'python3' no ambiente em que você lançou o notebook execute o Python nesse ambiente.
Você pode verificar se possui outro ambiente 'python3' procurando no caminho de pesquisa Env do seu sistema operacional (consulte o link para os documentos acima). Para mim (no meu mac), emiti o seguinte comando:
ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels
E eu realmente tinha um kernel 'python3' listado lá.
Graças a este comentário de problema do GitHub (observe a primeira resposta), você pode remover o ambiente 'python3' do usuário com o seguinte comando:
jupyter kernelspec remove python3
Agora, quando você executa jupyter kernelspec list
, assumindo que o test_env ainda esteja ativo, você obtém o seguinte:
python3 /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3
Observe que esse caminho está localizado no diretório test_env. Se você criar um novo ambiente, instalar o jupyter, ativá-lo e listar os kernels, obterá outro kernel 'python3' localizado no caminho do ambiente.
O kernel do usuário 'python3' estava tendo precedência sobre qualquer um dos kernels Env 'python3'. Ao removê-lo, o kernel 'python3' do ambiente ativo foi exposto e pode ser escolhido sempre. Isso elimina a necessidade de criar manualmente os kernels. Também faz mais sentido em termos de desenvolvimento de software, onde se deseja isolar-se em um único ambiente. A execução de um kernel diferente do ambiente host não parece natural.
Parece também que este usuário 'python3' não está instalado para todos por padrão; portanto, nem todos são confrontados com esse problema.
conda install ipykernel
nesse ambiente.