我想在Jupyter笔记本中执行一个长期运行的Python脚本,这样我就可以破解中期生成的数据结构。
该脚本具有许多依赖项和命令行参数,并使用特定的virtualenv执行。是否可以从指定的virtualenv(与Jupyter安装的不同)交互式地在笔记本中运行Python脚本?
谢谢!
答案 0 :(得分:51)
这里有什么对我有用(非conda
python):
(MacOS,python的brew版本。如果你正在使用系统python,你可能(将)需要在sudo
之前添加每个命令)
首先激活virtualenv
如果重新开始,那么,例如,你可以使用virtualenvwrapper
$pip install virtualenvwrapper
$mkvirtualenv -p python2 py2env
$workon py2env
# This will activate virtualenv
(py2env)$
# Then install jupyter within the active virtualenv
(py2env)$ pip install jupyter
# jupyter comes with ipykernel, but somehow you manage to get an error due to ipykernel, then for reference ipykernel package can be installed using:
(py2env)$ pip install ipykernel
接下来,设置内核
(py2env)$ python -m ipykernel install --user --name py2env --display-name "Python2 (py2env)"
然后启动jupyter笔记本(此步骤不需要激活venv)
(py2env)$ jupyter notebook
# or
#$ jupyter notebook
在jupyter笔记本下拉菜单中:Kernel >> Change Kernel >> <list of kernels>
您应该看到Python2 (py2env)
内核
这也使得识别内核的python版本变得容易,并且可以并排维护。
这是指向详细文档的链接 http://ipython.readthedocs.io/en/stable/install/kernel_install.html
答案 1 :(得分:42)
在其他笔记本中提供笔记本内核的更简单的解决方案。
我正在使用Linux + virtualenv + virtualenvwrapper。如果您使用不同的设置,请将某些命令更改为相应的命令,但您应该明白这一点。
mkvirtualenv jupyter2
workon jupyter2
(jupyter2) pip install jupyter
(jupyter2) ipython kernel install --name "jupyter2_Python_2" --user
last命令创建~/.local/share/jupyter/kernels/jupyter2\ python\ 2/
目录
相同的东西3
mkvirtualenv -p /usr/bin/python3 jupyter3
// this uses python3 as default python in virtualenv
workon jupyter3
(jupyter3) pip install jupyter
(jupyter3) ipython kernel install --name "jupyter3_Python_3" --user
完成后,您应该看到两个内核,无论您使用什么环境来启动jupyter。
您可以直接在~/.local/share/jupyter/kernels/
中删除指向内核的链接。
如果您想仅从一个笔记本运行多个kerenel,请指定位置为ipython kernel install (--help)
提供选项或仅将目录从~/.local/share/jupyter/kernels/
复制到~/envs/jupyter3/share/jupyter
。
答案 2 :(得分:13)
我发现此链接非常有用:
https://ocefpaf.github.io/python4oceanographers/blog/2014/09/01/ipython_kernel/
确保你将jupyter安装到你的virtualenv中。如果链接稍后消失,请点击这里:
您需要创建一个新内核。您使用JSON文件指定内核。您的内核通常位于~/.ipython/kernels
。创建一个名为virtualenv的目录,并在其中创建kernel.json文件。例如,我的一条路径看起来像~./ipython/kernels/datamanip/kernel.json
这是我的kernel.json文件的样子:
{
"display_name": "Data Manipulation (Python2)",
"language": "python",
"codemirror_mode": {
"version": 3,
"name":"ipython"
},
"argv": [
"/Users/ed/.virtualenvs/datamanip/bin/python",
"-c",
"from IPython.kernel.zmq.kernelapp import main; main()",
"-f",
"{connection_file}"
]
}
我不确定codemirror_mode对象到底在做什么,但它似乎没有任何伤害。
答案 3 :(得分:8)
您可以为您的IPython笔记本使用virtualenv。按照以下步骤,实际上不需要第一步,只需确保通过source ~/path-to-your-virtualenv/
将ipython内核模块安装到virtualenv
中workon my-virtualenv-name#激活你的virtualenv,如果你还没有 pip install ipykernel
(最重要的一步)现在运行内核“自安装”脚本:
python -m ipykernel install --user --name = my-virtualenv-name 根据需要更换--name参数。
您现在应该能够在IPython笔记本菜单中看到您的内核:Kernel -> Change kernel
并能够切换到它(您可能需要在页面出现之前刷新页面)。 IPython将记住从那时起用于该笔记本的内核。
答案 4 :(得分:5)
. /path/to/virtualenv/.venv/bin/activate
python -m ipykernel install --user --name .venv --display-name .venv
参考:Kernels for different environments(官方文档)
答案 5 :(得分:1)