Usando o Python 2.xe o Python 3.x no Notebook IPython

255

Eu uso notebooks IPython e gostaria de poder optar por criar um notebook python 2.x ou 3.x no IPython.

Eu inicialmente tinha Anaconda. Com o Anaconda, uma variável de ambiente global precisou ser alterada para selecionar qual versão do python você deseja e o IPython poderia ser iniciado. Não era o que eu estava procurando, então desinstalei o Anaconda e agora configurei minha própria instalação usando o MacPorts e o PiP. Parece que ainda tenho que usar

port select --set python <python version> 

para alternar entre python 2.xe 3.x. o que não é melhor que a solução anaconda.

Existe uma maneira de selecionar qual versão do python você deseja usar depois de iniciar um notebook IPython, de preferência com minha versão atual do MacPorts?

deltap
fonte

Respostas:

336

A idéia aqui é instalar vários ipythonkernels. Aqui estão as instruções para o anaconda. Se você não estiver usando o anaconda, adicionei recentemente instruções usando virtualenvs puros.

Anaconda> = 4.1.0

Desde a versão 4.1.0, o anaconda inclui um pacote especial nb_conda_kernelsque detecta ambientes conda com kernels de notebook e os registra automaticamente. Isso torna o uso de uma nova versão python tão fácil quanto a criação de novos ambientes conda:

conda create -n py27 python=2.7 ipykernel
conda create -n py36 python=3.6 ipykernel

Após a reinicialização do notebook jupyter, os novos kernels estão disponíveis na interface gráfica. Observe que novos pacotes precisam ser explicitamente instalados nos novos ambientes. A seção Gerenciando ambientes nos documentos da conda fornece mais informações.

Registrando kernels manualmente

Os usuários que não desejam usar nb_conda_kernelsou ainda usam versões mais antigas do anaconda podem usar as etapas a seguir para registrar manualmente os kernels do ipython.

configure o python2.7ambiente:

conda create -n py27 python=2.7
conda activate py27
conda install notebook ipykernel
ipython kernel install --user

configure o python3.6ambiente:

conda create -n py36 python=3.6
conda activate py36
conda install notebook ipykernel
ipython kernel install --user

Depois disso, você poderá escolher entre python2
epython3 ao criar um novo notebook na interface.

Além disso, você pode passar as opções --namee --display-namepara ipython kernel installse desejar alterar os nomes dos seus kernels. Veja ipython kernel install --helppara mais informações.

cel
fonte
Sua solução se parece muito com a solução que acabei usando e, em princípio, esperava que funcionasse. Como já desinstalei o anaconda e consegui esse trabalho, não poderei verificar.
Deltap 27/05
9
Se você deseja configurar o kernelspecs sem a necessidade de root, você pode ipython kernelspec install-self --userinstalá-los para o usuário atual.
Thomas K
1
Eu descobri isso! Sua resposta ajudou! dropbox.com/s/6ayqf55ctkv2xgk/…
Programador inteligente
7
O principal item é que você deve INSTALAR o nb_conda_kernels que não veio com o meu Anaconda inicial! Obrigado!
dartdog
1
@cel, de fato, o ambiente em que inicio o jupyter não possui o pacote nb_conda_kernels instalado por padrão. Não tomei tempo para ler todos os comentários: talvez você possa editar sua resposta e incluir o remake de dartdog.
Antoine Gautier
276

Se você estiver executando o Jupyter no Python 3, poderá configurar um kernel do Python 2 como este:

python2 -m pip install ipykernel

python2 -m ipykernel install --user

http://ipython.readthedocs.io/en/stable/install/kernel_install.html

Ish
fonte
52
Mude o '2' para '3' se você já tiver configurado o python2 e precisar do python3. Eu não entendo por que essa não é a resposta principal, ela definitivamente vence com a navalha de Occam e funcionou para mim.
wordsforthewise 30/07
6
Funciona perfeitamente. Deve ser a primeira resposta de fato.
precisa saber é
2
O comando python2 está incluído no próprio python? Por favor, explique detalhadamente esta resposta. :)
verystrongjoe
3
isso funciona, mas não está vinculado ao meu sistema python 2 com pacotes adicionais. Existe uma maneira de vincular a um binário / executável python existente?
Rutger Hofste
1
Funciona perfeitamente no win10, basta substituir python2por your\path\to\python(2).exe.
Lucien
42

Estas instruções explicam como instalar um kernel python2 e python3 em ambientes virtuais separados para usuários não anaconda. Se você estiver usando o anaconda, encontre minha outra resposta para uma solução diretamente adaptada ao anaconda.

Presumo que você já tenha jupyter notebookinstalado.


Primeiro, verifique se você tem um python2e um python3intérprete pipdisponíveis.

No ubuntu você instalaria estes por:

sudo apt-get install python-dev python3-dev python-pip python3-pip

Em seguida, prepare e registre os ambientes do kernel

python -m pip install virtualenv --user

# configure python2 kernel
python -m virtualenv -p python2 ~/py2_kernel
source ~/py2_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py2 --user
deactivate

# configure python3 kernel
python -m virtualenv -p python3 ~/py3_kernel
source ~/py3_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py3 --user
deactivate

Para facilitar, convém adicionar aliases de shell para o comando de ativação ao seu arquivo de configuração de shell. Dependendo do sistema e do shell que você usa, pode ser ~/.bashrc, por exemplo , ~/.bash_profileou~/.zshrc

alias kernel2='source ~/py2_kernel/bin/activate'
alias kernel3='source ~/py3_kernel/bin/activate'

Depois de reiniciar o shell, agora você pode instalar novos pacotes após ativar o ambiente que deseja usar.

kernel2
python -m pip install <pkg-name>
deactivate

ou

kernel3
python -m pip install <pkg-name>
deactivate
cel
fonte
seguiu isso até o ponto, instalou os pandas, iniciou o jupyter, mudou para o kernel py3: a importação dos pandas falhou com o erro 'não encontrado'. Isso está me deixando maluco
user1255933
1
@ user1255933, isso provavelmente ocorre devido a uma instalação com a versão errada do pip. Isso pode acontecer se a ativação do ambiente de destino falhar ou não contiver uma versão do pip. Você pode achar minha resposta interessante aqui: stackoverflow.com/questions/32680081/… .
22617
Obrigado pelas instruções sobre como usar o modo não-anaconda para instalar o kernel
mdivk
37

Com uma versão atual do Notebook / Jupyter, você pode criar um kernel Python3 . Após iniciar um novo aplicativo de notebook a partir da linha de comando com o Python 2, você deverá ver a entrada "Python 3" no menu suspenso "Novo". Isso fornece um notebook que usa o Python 3. Portanto, você pode ter dois notebooks lado a lado com diferentes versões do Python.

Os detalhes

  1. Crie este diretório: mkdir -p ~/.ipython/kernels/python3
  2. Crie este arquivo ~/.ipython/kernels/python3/kernel.jsoncom este conteúdo:

    {
        "display_name": "IPython (Python 3)", 
        "language": "python", 
        "argv": [
            "python3", 
            "-c", "from IPython.kernel.zmq.kernelapp import main; main()", 
            "-f", "{connection_file}"
        ], 
        "codemirror_mode": {
            "version": 2, 
            "name": "ipython"
        }
    }
  3. Reinicie o servidor notebook.

  4. Selecione "Python 3" no menu suspenso "Novo"
  5. Trabalhar com um notebook Python 3
  6. Selecione "Python 2" no menu suspenso "Novo"
  7. Trabalhar com um notebook Python 2
Mike Müller
fonte
Isso é ótimo e estou tentando fazê-lo funcionar, mas você poderia especificar como iniciar jupyterneste cenário (eu tenho que executar ipython notebookou ipython3 notebook). Um agora só posso correr ou o outro (com seus respectivos ambientes, mas eu ver os dois núcleos dentro listados jupyter. Poderia talvez expandir a sua resposta para incluir como começar jupyterpara que eu possa correr python2e python3side-by-side? Obrigado!
Chris
1
Ok, acho que descobri - tive que ajustar o kernel.jsonarquivo dentro ~/Library/Jupyter/kernels/python3/(no OS X) e adicionar os argumentos mencionados no arquivo vinculado.
Chris
@ Chris Sim, embora a descrição por trás do link seja fornecida em um IPython Notebook, isso pode ser feito em um editor. Basta criar ou modificar um arquivo com um determinado nome em um determinado caminho e no conteúdo mostrado. Fico feliz que você resolveu seu problema.
Mike Müller
Eu recomendaria editar sua resposta para incluir os detalhes desse link. As respostas não devem ocultar a parte mais importante "por trás" de um link.
Chris
1
@ Chris Adicionou os detalhes do link.
Mike Müller
22

Está disponível uma solução que permite manter minha instalação do MacPorts, configurando o Ipython kernelspec.

Requisitos:

  • O MacPorts está instalado no diretório / opt usual
  • python 2.7 é instalado através de macports
  • python 3.4 é instalado através de macports
  • O Ipython está instalado para o python 2.7
  • Ipython está instalado para python 3.4

Para python 2.x:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin
$ sudo ./ipython kernelspec install-self

Para python 3.x:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin
$ sudo ./ipython kernelspec install-self

Agora você pode abrir um notebook Ipython e, em seguida, escolher um notebook python 2.x ou python 3.x.

Escolha o seu python!

deltap
fonte
Você pode por favor confirme que você pode executar python2e python3do kernel cadernos lado-a-lado na mesma jupyterinstância? Nesse caso, como exatamente você começa jupytera não ter caminhos conflitantes? Atualmente, só posso executar python2ou python3codificar configurando o $PATH $PYTHONPATHambiente apropriado de antemão. Posso evitar isso de alguma forma?
Chris
Eu posso rodar notebooks do kernel python2 ou python3.
deltap 27/08/15
Como você inicia jupyter(dado que está instalado para python 2.7e para python 3.4) Você definiu $ PYTHONPATH ou criou algum ambiente virtual? Você está apenas ligando ipython notebook? Em caso afirmativo, a que ipythonisso se refere - aquele instalado para 2.7 ou 3.4?
Chris
Estou apenas ligando python notebook. which ipythonmostra que está apontando para/opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin/ipython
deltap 28/08
Tudo bem, eu descobri o meu problema e tinha a ver com um pré-definido $PYTHONPATH, o que dificulta a troca de kernels. Eu precisava unset PYTHONPATHantes de começar ipythone agora funciona.
Chris
18

Na minha instalação do Linux, fiz:

sudo ipython2 kernelspec install-self

E agora meu python 2 está de volta à lista.

Referência:

http://ipython.readthedocs.org/en/latest/install/kernel_install.html


ATUALIZAR:

O método acima agora está obsoleto e será descartado no futuro. O novo método deve ser:

sudo ipython2 kernel install

mimoralea
fonte
2
Eu odeio colar comandos aleatoriamente na minha instalação do Ubuntu, mas isso funcionou para mim.
Joseph
1
Deve ser a resposta escolhida.
e9t
1
Breve e direto ao ponto, apliquei esta solução no Mac OS X, funciona sem problemas.
Konrad
1
Eu tentei todas as respostas. Mas isso funcionou para mim. Experimente se você estiver no ubuntu.
sinsuren 21/10
1
E onde eu chego ipython2?
Sudo #
5

A seguir estão as etapas para adicionar o kernel python2 ao notebook jupyter:

abra um terminal e crie um novo ambiente python 2: conda create -n py27 python=2.7

ativar o ambiente: Linux source activate py27ou Windowsactivate py27

instale o kernel no ambiente: conda install notebook ipykernel

instale o kernel para fora do env: ipython kernel install --user

fechar o ambiente: source deactivate

Embora uma resposta tardia espero que alguém ache útil: p

Akash Chandra
fonte
Isso não adiciona nada além do que já foi claramente indicado na resposta do @ cel .
merv
3

Use sudo pip3 install jupyterpara instalar o jupyter para python3 e sudo pip install jupyterpara instalar o notebook jupyter para python2. Em seguida, você pode chamar o ipython kernel installcomando para ativar os dois tipos de notebook no notebook jupyter.

sv_jan5
fonte
1

Eu olhei para esta excelente informação e então me perguntei , já que

  1. Eu tenho python2, python3 e IPython todos instalados,
  2. eu tenho o PyCharm instalado,
  3. O PyCharm usa o IPython para seu console Python,

se PyCharm usasse

  1. IPython-py2 quando Menu> Arquivo> Configurações> Projeto> Intérprete de Projeto == py2 AND
  2. IPython-py3 quando Menu> Arquivo> Configurações> Projeto> Intérprete de Projeto == py3

RESPOSTA: Sim!

PS: Eu tenho o Python Launcher para Windows instalado também.

Amor e paz - Joe Codeswell
fonte
0

No Windows 7, eu tinha o anaconda e o anaconda3 instalados. Entrei \Users\me\anaconda\Scriptse executei

sudo .\ipython kernelspec install-self

então eu entrei \Users\me\anaconda3\Scriptse executei

sudo .\ipython kernel install

(Eu entendi jupyter kernelspec install-self is DEPRECATED as of 4.0. You probably want 'ipython kernel install' to install the IPython kernelspec.)

Depois de iniciar jupyter notebook(no anaconda3), recebi um menu suspenso no canto superior direito, em "Novo", para que eu pudesse escolher entre os kernels Python 2 ou Python 3.

Krischu
fonte
0
  • Se você estiver executando o anaconda no ambiente virtual.
  • E quando você cria um novo notebook, mas não estou mostrando para selecionar o kernel do ambiente virtual.
  • Então você deve configurá-lo no ipykernel usando o seguinte comando
$ pip install --user ipykernel
$ python -m ipykernel install --user --name=test2
Rahul Verma
fonte