【发布时间】:2015-11-22 08:40:21
【问题描述】:
我想配置 jupyter 以允许我在两个不同的笔记本中同时运行 python 2.7 和 3.4 内核(或者甚至可以在一个笔记本中从一个切换到另一个)。
(1) 这可能吗?
我在问,因为在 Using both Python 2.x and Python 3.x in IPython Notebook 中建议这是可能的,但没有提供关于这将如何工作的详细答案。
您还可以在https://try.jupyter.org 中看到它似乎非常可行(您甚至可以从一个 python 2 内核切换到一个 python 3 内核)。所以我觉得假设它确实有可能是合理的(但如果我错了,请纠正我)。
(2) 这是怎么做到的?
以前的答案(例如Open IPython Notebook 2.7 and 3.4 in Parallel)建议在两个不同端口启动两个不同 ipython notebook 服务器。这当然是完全合乎逻辑和可能的,但是不回答了我的问题。
我设法为 python 2 和 3 安装了ipython。然后我通过在每个相应的 python 环境中调用以下命令让两个内核都显示在 jupyter 中:
ipython kernelspec install-self
这为我创建了kernel.json 文件,我现在可以选择其中任何一个来在jupyter 中创建一个新笔记本。 python 2 的kernel.json 示例:
{
"display_name": "Python 2",
"language": "python",
"argv": [
"/usr/local/opt/python/bin/python2.7",
"-m",
"ipykernel",
"-f",
"{connection_file}"
]
}
问题是,当我从python 2环境启动jupyter时(定义了$PYTHONPATH),我只能运行一个python 2内核(打开相应的笔记本时另一个会崩溃)。同样,当我从 python 3 环境(定义了 $PYTHONPATH)启动 jupyter 时。这对我来说通常很有意义,但我想知道如何启动或配置 jupyter 以允许两个内核从同一个 jupyter 实例运行,并且仍然指定我自己的特定 $PYTHONPATHs 以便能够加载我的包裹。
我认为这是我的实际问题 - 在开始 jupyter 之前预定义 $PYTHONPATH。所以我打电话:
unset PYTHONPATH
ipython notebook
我现在确实可以从单个 jupyter 实例运行两个内核 (py2&3),但我无法从特定的本地目录加载 python 包。我想我可以在笔记本中手动执行此操作:
import sys
sys.path.append("/some/path/lib/python2.7/site-packages")
但这真的是我应该做的吗?或者我可以配置我通常写入$PYTHONPATH 的其他目录(例如kernel.json 文件吗?
PS:请不要问为什么我需要这个 - 不,我不真的需要它 - 但我仍然想知道是否以及如何有可能。
[编辑]
请注意,我不愿意安装一些 python 管理实用程序(例如 Anaconda)来完成所有这些工作,(除非它是唯一的方法)。
【问题讨论】:
-
好的,我已经回答了我最初的一些问题,但是如果你能帮忙解决
$PYTHONPATH部分,请告诉我 :) 谢谢!
标签: python python-2.7 python-3.x ipython-notebook jupyter