我正在开发一个设置,其中几个开发人员,使用Jupyter笔记本,在不同的项目上,都在远程机器上执行代码。
由于每个项目都需要不同的virtualenv
,现在发生的是每个项目的每个开发人员,设置特定项目virtualenv
,安装笔记本,在不同的端口上运行并连接到通过该端口的远程机器。
有没有办法在远程计算机上运行1个Jupyter笔记本,但能够选择哪个virtualenv
作为内核使用?
我主要考虑的是能够只暴露远程机器上的一个端口,但能够使用不同的虚拟python环境来运行笔记本
答案 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 菜单切换内核 我注意到上面的命令会安装一些额外内容(nbpresent,nb_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
应该处理所有内部。