使用特定的virtualenv在Jupyter Notebook中执行Python脚本


68

我想从Jupyter笔记本中执行长时间运行的Python脚本,以便可以对运行中期生成的数据结构进行修改。

该脚本具有许多依赖性和命令行参数,并使用特定的virtualenv执行。是否可以从指定的virtualenv(与Jupyter安装的环境不同)在笔记本中交互运行Python脚本?

谢谢!


不,我不这么认为。
2015年

1
解决问题的另一种方法是使用PyCharm之类的IDE。只需选择要用于项目的virtualenv,然后添加一些断点即可。当执行在您的断点处暂停时,您将可以交互方式运行python代码。您也可以看看pdb(docs.python.org/3.5/library/pdb.html
elgehelge

Answers:


76

以下是对我有用的内容(非condapython):(MacOS,即刻的python版本。如果您使用的是系统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


2
好东西,谢谢。我想提一提,我第一次执行ipykernel安装步骤时,并没有采取任何措施。不知道发生了什么(除了什么都没有)。第二次运行它时,我收到消息,说明内核已创建。
Mike Lane

47

使笔记本内核在其他笔记本中可用的更简单的解决方案。

我正在使用Linux + virtualenv + virtualenvwrapper。如果您使用不同的设置,请将一些命令更改为适当的命令,但是您应该了解一下。

mkvirtualenv jupyter2
workon jupyter2
(jupyter2) pip install jupyter
(jupyter2) ipython kernel install --name "jupyter2_Python_2" --user

最后一个命令创建~/.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/。要指定位置,如果只想从一个笔记本上运行多个内核,请提供选项ipython kernel install (--help)或仅从中复制目录。~/.local/share/jupyter/kernels/~/envs/jupyter3/share/jupyter


15

我发现此链接非常有用:

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对象在做什么,但似乎没有任何害处。


不知道您是否仍然处于活跃状态。您是否有机会提供您提到的要点链接?
大卫

1
我必须手动将python二进制文件的路径更改为新创建的虚拟环境的路径。
ionox0

9

根据文档,这确实很简单

您可以为IPython Notebook使用virtualenv。遵循以下步骤,实际上不需要第一步,只需确保通过以下方式激活了virtualenvsource ~/path-to-your-virtualenv/

  1. 将ipython内核模块安装到您的virtualenv中

    workon my-virtualenv-name#激活您的virtualenv(如果尚未pip安装ipykernel)

  2. 最重要的步骤)现在运行内核“自我安装”脚本:

    python -m ipykernel install --user --name = my-virtualenv-name适当地替换--name参数。

  3. 现在,您应该可以在IPython笔记本菜单中看到您的内核:Kernel -> Change kernel并可以切换到它(您可能需要刷新页面才能在列表中显示它)。从那时起,IPython就会记住该笔记本要使用哪个内核。


对于第1步,您是否使用虚拟环境的scripts文件夹中的pip pip安装ipython内核?对于步骤2,您是否使用在虚拟环境的脚本文件夹中找到的python.exe运行脚本?对于步骤3,您必须从哪个目录运行笔记本?
约翰尼·苹果公司

6

@singer的解决方案对我不起作用。这是起作用的:

. /path/to/virtualenv/.venv/bin/activate
python -m ipykernel install --user --name .venv --display-name .venv

参考:适用于不同环境的内核(官方文档)


也可以在ipython.readthedocs ipython.readthedocs.io/en/stable/install/kernel_install.html ..上获取最新参考信息
muon

是的,这是最新的参考,但是如果文本更改,那么我的参考将无效。所以这就是为什么我给了一个git链接。
AT

抱歉,没有检查您的链接:(
muon

1

nb_canda非常有用:

conda install nb_conda

因此,您可以使用conda虚拟环境创建并选择自己的python内核,并在venv中管理软件包

屏幕截图

项目清单

屏幕截图

jupyter笔记本电脑中的conda环境管理器“ Conda”选项卡使您可以从笔记本电脑内部直接管理环境。

更改内核您还可以通过使用“内核”菜单中的“更改内核”选项来选择运行笔记本的内核。

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.