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

Execute Python script within Jupyter notebook using a specific virtualenv

我想从 Jupyter notebook 中执行一个长 运行ning Python 脚本,这样我就可以破解在 运行.[=11 中生成的数据结构=]

该脚本有很多依赖项和命令行参数,并使用特定的 virtualenv 执行。是否可以从指定的 virtualenv(不同于 Jupyter 安装)交互式 运行 笔记本内的 Python 脚本?

我发现这个 link 非常有用:

https://ocefpaf.github.io/python4oceanographers/blog/2014/09/01/ipython_kernel/

确保你 pip install jupyter 到你的 virtualenv 中。如果 link 稍后消失,这里是要点:

您需要创建一个新内核。您使用 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 对象到底在做什么,但它似乎没有造成任何伤害。

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

我正在使用 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

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

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

参考:Kernels for different environments(官方文档)

这是对我有用的(非 conda python): (MacOS,python 的 brew 版本。如果您使用系统 python,您可能(将)需要在每个命令前添加 sudo

  1. 首先激活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
    
  2. 接下来,设置内核

    (py2env)$ python -m ipykernel install --user --name py2env --display-name "Python2 (py2env)"
    
  3. 然后启动jupyter notebook(这一步不需要激活venv)

    (py2env)$ jupyter notebook
    # or
    #$ jupyter notebook
    

在 jupyter notebook 下拉菜单中:Kernel >> Change Kernel >> <list of kernels> 你应该看到 Python2 (py2env) 内核。

这也使得识别 python 版本的内核变得容易,并且可以同时维护。

这里是 link 详细文档: http://ipython.readthedocs.io/en/stable/install/kernel_install.html

其实很简单,基于documentation

您可以为 IPython 笔记本使用 virtualenv。请按照以下步骤操作,实际上不需要第一步,只需确保您通过 source ~/path-to-your-virtualenv/

激活了您的 virtualenv
  1. 将 ipython 内核模块安装到您的 virtualenv

    workon my-virtualenv-name # 激活你的 virtualenv,如果你还没有的话 pip 安装 ipykernel

  2. (最重要的一步)现在运行内核"self-install"脚本:

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

  3. 您现在应该能够在 IPython notebook 菜单中看到您的内核:Kernel -> Change kernel 并且能够切换到它(您可能需要先刷新页面它出现在列表中)。 IPython 以后会记住那个笔记本使用哪个内核。

nb_canda有用:

conda install nb_conda

因此,您可以使用 conda 虚拟环境创建和 select 自己的 python 内核,并在 venv

中管理包

截图

列表项

conda 环境管理器 jupyter notebook 中的 Conda 选项卡允许您直接在 notebook 中管理您的环境。

更改内核 您还可以 select 使用内核菜单中的更改内核选项 运行 笔记本的内核