我正在开发一个设置,其中几个开发人员,使用Jupyter笔记本,在不同的项目上,都在远程机器上执行他们的代码 .
由于每个项目都需要不同的 virtualenv
现在发生的是每个项目的每个开发人员,设置一个特定于项目的项目,安装笔记本,在不同的端口上运行它并通过该端口连接到远程机器 .
有没有办法在远程机器上运行1个Jupyter笔记本,但是能够选择哪个 virtualenv
用作内核?
我主要考虑的是能够只暴露远程机器上的一个端口,但能够使用不同的虚拟python环境来运行笔记本电脑
2 回答
如果你有很多开发人员在远程机器上工作,你必须使用JupyterHub,JupyterHub是为此而制造的,而JupyterHub是缓解你痛苦的第一步;如果你不使用JupyterHub,事情就会出错 .
一旦安装了JupyterHub,您的开发人员就可以使用他们的凭据登录,从而暴露单个端口,并且能够启动/停止笔记本服务器而无需进行sshing .
完成后,您可以调查多个venv .
在您要安装的每个环境中
ipykernel
. 它是知道如何与笔记本电脑对话的模块 . 在每个环境中,您需要发布python -m ipykernel install --user --name=my-env-name
,如帖子下方的评论中所述 . 这个用Jupyter注册,告诉它"Hey I exist expose me to your users" . 您也可以决定安装this,它会自动为您执行此操作,但有一些注意事项 .正如其他评论者指出你可能想阅读Jake's post,如果你有几个用户,你绝对应该总是几乎没有问题使用JupyterHub .
这就是我在同一个Jupyter笔记本实例中设法使用多个内核的方法
conda install nb_conda
nb_conda是一个笔记本扩展,允许您从笔记本中管理conda环境 . 它还允许您直接从 Kernal 菜单切换内核 .
我注意到上面的命令安装了一些额外的东西(nbpresent,nb_anacondacloud),可以选择禁用它们 .
如果你还没有使用conda,你应该考虑它的包管理和virtualenv需要[source] .
我相信这个系统没有jakesvdp的post中提到的许多陷阱,@ denfromufa mentions作为笔记本扩展
nb_conda
应该处理所有的内部 .截图
jupyter笔记本中的Conda选项卡允许您直接在笔记本中管理环境 .
您还可以使用 Kernel 菜单中的 Change kernel 选项选择要运行笔记本的内核