在一台Jupyter笔记本电脑上使用不同的virtualenv

时间:2017-11-30 10:09:17

标签: python pip ipython virtualenv jupyter-notebook

我正在开发一个设置,其中几个开发人员,使用Jupyter笔记本,在不同的项目上,都在远程机器上执行代码。

由于每个项目都需要不同的virtualenv,现在发生的是每个项目的每个开发人员,设置特定项目virtualenv,安装笔记本,在不同的端口上运行并连接到通过该端口的远程机器。

有没有办法在远程计算机上运行1个Jupyter笔记本,但能够选择哪个virtualenv作为内核使用?

我主要考虑的是能够只暴露远程机器上的一个端口,但能够使用不同的虚拟python环境来运行笔记本

2 个答案:

答案 0 :(得分:3)

  

我正在开发几个开发人员的设置

如果你有许多开发人员在远程机器上工作,你必须使用JupyterHub,JupyterHub是为此而做的,而JupyterHub是缓解你痛苦的第一步;如果你不使用JupyterHub,事情就会出错。

一旦安装了JupyterHub,您的开发人员就可以使用他们的凭据登录,从而暴露单个端口,并且无需ssh就可以启动/停止笔记本服务器。

一旦完成,您可以调查多个venv。

在您要安装的每个环境中ipykernel。它是知道如何与笔记本电脑对话的模块。在每个环境中,您需要发布python -m ipykernel install --user --name=my-env-name,如帖子下方的评论中所述。这个用Jupyter注册,告诉它"嘿,我存在让我暴露给你的用户"。您也可以决定安装this自动为您做部分工作,但有一些注意事项。

正如其他评论者指出你可能想要阅读Jake's post,如果你有几个用户,你绝对应该总是几乎没有问题使用JupyterHub

答案 1 :(得分:0)

  

有没有办法在遥控器上运行1个Jupyter笔记本   机器,但能够选择哪个virtualenv用作内核?

这就是我在同一个Jupyter笔记本实例中设法使用多个内核的方法

conda install nb_conda

nb_conda是一个笔记本扩展程序,允许您从笔记本中管理conda环境。它还允许您直接从 Kernal 菜单切换内核 我注意到上面的命令会安装一些额外内容(nbpresentnb_anacondacloud),可以选择禁用它们。

jupyter-nbextension disable nb_anacondacloud --py --sys-prefix
jupyter-serverextension disable nb_anacondacloud --py --sys-prefix

jupyter-nbextension disable nbpresent --py --sys-prefix
jupyter-serverextension disable nbpresent --py --sys-prefix

如果你还没有使用conda,你应该考虑将它用于你的包管理和virtualenv需要[source]。

我相信这个系统没有jakesvdp post中提到的许多陷阱,@denfromufa mentions因为笔记本扩展nb_conda应该处理所有内部。

截图

conda environment manager 使用jupyter笔记本中的 Conda选项卡,您可以直接在笔记本中管理环境。

Change Kernel
您还可以使用内核菜单

中的更改内核选项来选择运行笔记本的内核