在IPython Notebook中同时使用Python 2.x和Python 3.x


255

我使用IPython笔记本,并且希望能够选择在IPython中创建2.x或3.x python笔记本。

我最初有Anaconda。使用Anaconda时,必须更改全局环境变量以选择所需的python版本,然后才能启动IPython。这不是我想要的,所以我卸载了Anaconda,现在使用MacPorts和PiP设置了自己的安装。看来我还是要用

port select --set python <python version> 

在python 2.x和3.x之间切换。这并不比anaconda解决方案好。

启动IPython笔记本后,是否有一种方法可以选择要使用的python版本,最好使用当前的MacPorts构建?


Answers:


336

这里的想法是安装多个ipython内核。这是有关蟒蛇的说明。如果你不使用蟒蛇,我最近添加的说明采用纯virtualenvs。

水蟒> = 4.1.0

从版本4.1.0开始,anaconda包含一个特殊的程序包nb_conda_kernels,该程序包可检测笔记本内核的conda环境并自动注册它们。这使得使用新的python版本就像创建新的conda环境一样容易:

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

重新启动jupyter notebook之后,新内核可通过图形界面使用。请注意,必须将新软件包明确安装到新环境中。conda文档中的“ 管理环境”部分提供了更多信息。

手动注册内核

不想使用nb_conda_kernels或仍使用旧版本的anaconda的用户可以使用以下步骤来手动注册ipython内核。

配置python2.7环境:

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

配置python3.6环境:

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

在此之后,你应该能够之间进行选择python2
python3创造的接口一个新的笔记本时。

另外,如果要更改内核名称,可以将--name--display-name选项传递给ipython kernel install。请参阅ipython kernel install --help以获取更多信息。


您的解决方案看起来很像我最终使用的解决方案,原则上我希望它能起作用。由于我已经卸载了anaconda并可以正常工作,因此无法进行验证。
2015年

9
如果要设置root用户而不需要root用户,则可ipython kernelspec install-self --user以为当前用户安装它们。
2015年

1
我知道了!您的回答帮助了! dropbox.com/s/6ayqf55ctkv2xgk/…–
聪明的程序员,

7
关键是您必须安装nb_conda_kernels,它不是我最初的Anaconda随附的!谢谢!
dartdog

1
@cel,确实,我从jupyter开始的环境默认情况下没有安装软件包nb_conda_kernels。我没有花时间阅读所有评论:也许您可以编辑答案并包括dartdog的remak。
Antoine Gautier

276

如果您在Python 3上运行Jupyter,则可以这样设置Python 2内核:

python2 -m pip install ipykernel

python2 -m ipykernel install --user

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


52
如果您已经设置了python2并且需要python3,请将“ 2”切换为“ 3”。我不明白为什么这不是最好的答案,它肯定会被Occam的剃须刀胜出,并且对我有用。
wordforthewise

6
完美运作。确实应该是第一个答案。
JSmyth '16

2
python2命令本身包含在python中吗?请详细说明该答案。:)
verystrongjoe

3
这行得通,但没有与其他软件包链接到我的系统python 2。有没有办法链接到现有的python二进制文件/可执行文件?
罗格·霍夫斯特

1
在win10中可以完美运行,只需替换python2为即可your\path\to\python(2).exe
Lucien

42

这些说明说明了如何为非anaconda用户在单独的虚拟环境中安装python2和python3内核。如果您使用anaconda,请找到我的其他答案,以直接针对anaconda量身定制解决方案。

我假设您已经jupyter notebook安装了。


首先,请确保您有python2和提供的python3口译员pip

在ubuntu上,您可以通过以下方式安装它们:

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

接下来准备并注册内核环境

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

为了简化操作,您可能需要将激活命令的外壳别名添加到外壳配置文件中。根据不同的系统和外壳使用,这可以是例如~/.bashrc~/.bash_profile~/.zshrc

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

重新启动外壳程序后,现在可以在激活要使用的环境后安装新软件包。

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

要么

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

接下来是点,安装了熊猫,启动了jupyter,切换到py3内核:导入熊猫失败,出现“未找到”错误。它在驱使我
疯狂

1
@ user1255933,这可能是由于安装了错误的pip版本造成的。如果激活目标环境失败或它不包含pip版本,则会发生这种情况。您可能会在这里发现我的答案很有趣:stackoverflow.com/questions/32680081/…
cel

感谢您使用非anaconda方法安装内核的说明
mdivk

37

使用当前版本的Notebook / Jupyter,您可以创建Python3内核。使用Python 2从命令行启动新的笔记本应用程序后,您应该在下拉菜单“新建”中看到条目“ Python 3”。这为您提供了一个使用Python 3的笔记本。因此,您可以并排放置两个笔记本,并使用不同的Python版本。

细节

  1. 创建此目录: mkdir -p ~/.ipython/kernels/python3
  2. ~/.ipython/kernels/python3/kernel.json使用以下内容创建此文件:

    {
        "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. 重新启动笔记本服务器。

  4. 从下拉菜单“新建”中选择“ Python 3”
  5. 使用Python 3笔记本
  6. 从下拉菜单“新建”中选择“ Python 2”
  7. 使用Python 2笔记本

太好了,我正在尝试使该工作正常进行,但是您能否指定jupyter在这种情况下的开始方式(我必须运行ipython notebookipython3 notebook)。现在,我只能运行一个或另一个(连同其各自的环境中,但我确实看到两边的内核中列出里面jupyter。难道你是他扩大你的答案,包括如何启动jupyter,这样我可以运行python2python3并排方?谢谢!
克里斯

1
好的,我想我已经解决了-我必须在OS X上调整kernel.json文件内部~/Library/Jupyter/kernels/python3/,并添加链接文件中提到的参数。
克里斯

@Chris是的,虽然链接的描述在IPython Notebook中给出,但可以在编辑器中完成。只需在给定的路径和显示的内容处使用特定名称创建或修改文件。很高兴您解决了您的问题。
迈克·米勒

我建议编辑您的答案以包括该链接中的详细信息。答案不应该将最重要的部分隐藏在链接的“后面”。
克里斯(Chris)

1
@Chris从链接中添加了详细信息。
MikeMüller15年

22

提供了一个解决方案,该解决方案允许我通过配置Ipython kernelspec来保留MacPorts的安装。

要求:

  • MacPorts安装在通常的/ opt目录中
  • python 2.7是通过macports安装的
  • python 3.4通过macports安装
  • 为python 2.7安装了ipython
  • 为python 3.4安装了ipython

对于python 2.x:

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

对于python 3.x:

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

现在,您可以打开一个Ipython笔记本,然后选择python 2.x或python 3.x笔记本。

选择你的蟒蛇!


你可以请确认您可以运行python2python3内核笔记本电脑并排侧相同的jupyter实例?在这种情况下,您究竟如何开始jupyter没有冲突的路径?我目前只能通过预先设置适当的环境来运行python2python3编码$PATH $PYTHONPATH。我可以避免这种情况吗?
克里斯

我可以运行python2或python3内核笔记本。
2015年

您如何开始jupyter(假设已为python 2.7和安装了它python 3.4)您是否已定义$ PYTHONPATH或提供了某些虚拟环境?你只是在打电话ipython notebook吗?如果是这样,ipython那指的是-为2.7或3.4安装的那个?
克里斯

我只是在打电话python notebookwhich ipython表明它指向的是/opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin/ipython
deltap

好吧,我发现了我的问题,这与预定义有关$PYTHONPATH,这使切换内核变得困难。unset PYTHONPATH开始之前我必须这样做ipython,现在它可以工作了。
克里斯(Chris)

18

通过我的Linux安装,我做到了:

sudo ipython2 kernelspec install-self

现在,我的python 2又回到了列表中。

参考:

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


更新:

上面的方法现已弃用,将来会被删除。新方法应为:

sudo ipython2 kernel install


2
我讨厌将命令随机粘贴到我的Ubuntu安装中,但这确实对我有用。
约瑟夫

1
应该是选择的答案。
e9t

1
简而言之,我已经在Mac OS X上应用了该解决方案,没有问题。
Konrad

1
我尝试了所有答案。但这对我有用。如果您使用的是ubuntu,请尝试一下。
sinsuren '16

1
那我去ipython2哪儿呢?
sudo

5

以下是将python2内核添加到jupyter笔记本的步骤:

打开一个终端并创建一个新的python 2环境: conda create -n py27 python=2.7

激活环境:Linux source activate py27或Windowsactivate py27

在环境中安装内核: conda install notebook ipykernel

在env外部安装内核: ipython kernel install --user

关闭环境: source deactivate

尽管答案很晚,希望有人发现它有用:p


除了@cel的答案中已经明确指出的内容外,这没有添加任何内容。
MERV

3

使用sudo pip3 install jupyter安装了python3 jupyter和sudo pip install jupyter安装jupyter笔记本python2。然后,您可以调用ipython kernel install命令来启用两种类型的笔记本以在jupyter笔记本中进行选择。


1

我查看了这个出色的信息,然后想知道

  1. 我已经安装了python2,python3和IPython,
  2. 我安装了PyCharm,
  3. PyCharm将IPython用于其Python控制台,

如果 PyCharm将使用

  1. IPython的-PY2时菜单>文件>设置>项目>项目解释== PY2
  2. 当菜单>文件>设置>项目>项目解释器== py3时,IPython-py3

答案:是的!

PS我也安装了适用于Windows的Python启动器。


0

在Windows 7下,我安装了anaconda和anaconda3。我走进去\Users\me\anaconda\Scripts执行

sudo .\ipython kernelspec install-self

然后我走进去\Users\me\anaconda3\Scripts执行

sudo .\ipython kernel install

(我知道了 jupyter kernelspec install-self is DEPRECATED as of 4.0. You probably want 'ipython kernel install' to install the IPython kernelspec.

启动后jupyter notebook(在anaconda3中),我在右上角的“新建”下获得了一个整洁的下拉菜单,让我在Python 2 odr和Python 3内核之间进行选择。


0
  • 如果您在虚拟环境中运行anaconda。
  • 当您创建一个新笔记本时,我没有显示选择虚拟环境内核。
  • 然后,您必须使用以下命令将其设置到ipykernel中
$ pip install --user ipykernel
$ python -m ipykernel install --user --name=test2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.