(如何)我可以运行python 2.7&;3.4在jupyter(ipython)并排安装笔记本电脑?
我想将jupyter配置为允许我在两个不同的笔记本电脑中同时运行python 2.7和3.4内核(或者甚至可以在一个笔记本电脑中从一个切换到另一个) (1)这可能吗? 我之所以这样问,是因为在中有人建议这是可能的,但没有详细回答这究竟是如何工作的 您还可以看到,它似乎非常可行(甚至可以从一个python 2内核切换到python 3内核)。因此,我认为这确实是可能的(但如果我错了,请纠正我) (2)这是如何做到的? 以前的答案(如中)建议在两个不同的端口启动两个不同的ipython笔记本服务器。当然,这是完全合乎逻辑和可能的,但并没有回答我的问题 我设法为python 2和3安装了(如何)我可以运行python 2.7&;3.4在jupyter(ipython)并排安装笔记本电脑?,python,python-2.7,python-3.x,ipython-notebook,jupyter,Python,Python 2.7,Python 3.x,Ipython Notebook,Jupyter,我想将jupyter配置为允许我在两个不同的笔记本电脑中同时运行python 2.7和3.4内核(或者甚至可以在一个笔记本电脑中从一个切换到另一个) (1)这可能吗? 我之所以这样问,是因为在中有人建议这是可能的,但没有详细回答这究竟是如何工作的 您还可以看到,它似乎非常可行(甚至可以从一个python 2内核切换到python 3内核)。因此,我认为这确实是可能的(但如果我错了,请纠正我) (2)这是如何做到的? 以前的答案(如中)建议在两个不同的端口启动两个不同的ipython笔记本服务器。
ipython
。然后,通过在每个python环境中调用以下命令,我使这两个内核都出现在jupyter
中:
ipython kernelspec安装自我
这为我创建了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环境(定义了$PYTHONPATH
)启动jupyter
时,我只能运行python 2内核(另一个内核在打开相应的笔记本时会崩溃)。同样,当我从Python3环境(定义了$PYTHONPATH
)启动jupyter
时。这对我来说通常是有意义的,但我想知道如何启动或配置jupyter
以允许两个内核从同一jupyter
实例运行,并且仍然指定我自己特定的$PYTHONPATH
来加载我的包
我想这是我的实际问题-在开始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)来完成所有这些(除非这是唯一的方法)同样,当Python3处于活动状态时,无论在启动它的shell中哪个版本的Python处于活动状态,这两个版本的内核都可以在IPython笔记本中使用 鉴于“python2”是我的python2环境的名称,“activate env”是用于激活名为“env”的环境的anaconda命令,“deactivate”是用于停用当前活动环境(如果有)的命令,我用于启用此配置的命令有:
activate python2
ipython kernelspec install-self
deactivate
ipython kernelspec install-self
IPython笔记本中的sys.path会根据当前运行的Python版本进行动态和适当的更改。当它运行Python2时,sys.path是:
['', 'C:\\Users\\tn\\Documents\\python', 'C:\\Anaconda3\\envs\\python2\\python27.zip', 'C:\\Anaconda3\\envs\\python2\\DLLs', 'C:\\Anaconda3\\envs\\python2\\lib', 'C:\\Anaconda3\\envs\\python2\\lib\\plat-win', 'C:\\Anaconda3\\envs\\python2\\lib\\lib-tk', 'C:\\Anaconda3\\envs\\python2', 'C:\\Users\\tn\\AppData\\Roaming\\Python\\Python27\\site-packages', 'C:\\Anaconda3\\envs\\python2\\lib\\site-packages', 'C:\\Anaconda3\\envs\\python2\\lib\\site-packages\\Sphinx-1.3.1-py2.7.egg', 'C:\\Anaconda3\\envs\\python2\\lib\\site-packages\\cryptography-0.9.1-py2.7-win-amd64.egg', 'C:\\Anaconda3\\envs\\python2\\lib\\site-packages\\win32', 'C:\\Anaconda3\\envs\\python2\\lib\\site-packages\\win32\\lib', 'C:\\Anaconda3\\envs\\python2\\lib\\site-packages\\Pythonwin', 'C:\\Anaconda3\\envs\\python2\\lib\\site-packages\\setuptools-18.1-py2.7.egg', 'C:\\Anaconda3\\envs\\python2\\lib\\site-packages\\IPython\\extensions']
将内核切换到Python3后,sys.path变为:
['', 'C:\\Users\\tn\\Documents\\python', 'C:\\Anaconda3\\python34.zip', 'C:\\Anaconda3\\DLLs', 'C:\\Anaconda3\\lib', 'C:\\Anaconda3', 'C:\\Anaconda3\\lib\\site-packages', 'C:\\Anaconda3\\lib\\site-packages\\Sphinx-1.3.1-py3.4.egg', 'C:\\Anaconda3\\lib\\site-packages\\cryptography-0.9.1-py3.4-win-amd64.egg', 'C:\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\Anaconda3\\lib\\site-packages\\setuptools-18.1-py3.4.egg', 'C:\\Anaconda3\\lib\\site-packages\\IPython\\extensions']
PYTHONPATH=C:\Users\tn\Documents\python包含在两个版本的python的sys.path中
为了根据IPython笔记本的Python版本定制sys.path,环境变量(Python2)(另请参见(Python3))可以使用。此变量应包含一个可读的Python脚本,该脚本将在交互式模式启动期间执行。对于Python 2和Python 3,它必须可由两者执行。例如,在C:\Users\tn\Documents\Python中,我创建了以下名为“start”的脚本,该脚本确定了执行它的Python的主要版本并附加以指向sys.path的路径结尾的路径:
import sys
v = sys.version_info[0]
if v == 2 or v == 3:
sys.path.append(r'C:\Users\tn\Documents\python' + '\\' + str(v))
现在,在重新启动IPython笔记本电脑时,Python 2 sys.path[-1]是C:\Users\tn\Documents\Python\2,而Python 3是C:\Users\tn\Documents\Python\3。好的,我已经回答了一些初始问题,但是请告诉我您是否可以帮助
$PYTHONPATH
部分:)谢谢!谢谢,我会看一下PYTHONSTARTUP,但是我应该提到我没有(也不想)使用anaconda。