首页 文章

在一个Jupyter笔记本上有不同的virtualenv

提问于
浏览
6

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

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

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

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

2 回答

  • 3

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

    如果你有很多开发人员在远程机器上工作,你必须使用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 .

  • 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

    您还可以使用 Kernel 菜单中的 Change kernel 选项选择要运行笔记本的内核


相关问题