【问题标题】:jupyterhub and conda environmentsjupyterhub 和 conda 环境
【发布时间】:2018-01-17 13:03:35
【问题描述】:

我对 conda 环境和 jupyterhub 之间的关系有点困惑。

正如 jupyterhub 文档所说,它可以从 conda 安装。因此可以使用一些 conda 环境(例如环境“root”)并从中执行“conda install jupyterhub”。

在相同的环境中会“活”jupyter。在此环境中安装 nb_conda 可以在笔记本中选择内核和其他 conda 环境。

我的问题是关于 nbextensions 和 ipywidgets 之类的软件。他们应该在哪里?在与jupyterhub相同的环境中还是在对应新笔记本的环境中?

【问题讨论】:

    标签: jupyter ipywidgets jupyterhub


    【解决方案1】:

    conda 和 jupyter 之间的关系可能令人困惑。将 conda 视为您的环境,将 jupyter 视为任何其他包。一个可以用来启动进程然后提供服务的包。

    要回答您的问题,应将它们安装在您的 conda 环境中。不幸的是,它比这复杂一点。所有用户都可以使用这些扩展。我没有亲自测试过在不同环境中拥有更多扩展的单个用户(如果可能,但如果我这样做会更新答案)。

    If it helps, this is what the docs have to say for the matter:

    要安装 jupyter_contrib_nbextensions 笔记本扩展,需要三个步骤。首先,需要安装 Python pip 包。然后,需要将笔记本扩展本身复制到 Jupyter 数据目录。最后,可以使用内置的 Jupyter 命令启用已安装的笔记本扩展,或者更方便地使用作为此 repo 的依赖项安装的 jupyter_nbextensions_configurator 服务器扩展。

    Assuming you installed the extensions via conda:

    conda install -c conda-forge jupyter_contrib_nbextensions
    

    然后使用--sys-prefix,这很好。来自文档:

    --sys-prefix 安装到 python 的 sys.prefix,例如在虚拟环境中很有用,例如 conda。

    所以,要添加一个扩展,过程应该是这样的:

    $ sudo su -
    $ pip install fileupload
    $ jupyter nbextension install --sys-prefix --py fileupload
    $ jupyter nbextension enable fileupload --py --sys-prefix
    

    由于标题询问的是 conda 环境,所以我也将深入探讨一下。我已经在 Ubuntu 18.04LTS 上测试了这些方法。

    您通常希望允许用户共享用户创建的环境,而永远无法访问 root 权限。您有两个我见过的不错的选择(如果您知道其他方法,请发表评论):1)共享环境 2)从需求文件中复制环境。不要忘记您还必须将环境添加为内核。

    方法 1 - 共享环境

    在共享位置创建环境,然后让两个用户将其添加为内核。

    conda create -p /home/envs/test --clone root
    

    可以克隆根来复制根环境,或基础环境的基础。 /home/envs/test 将在“envs”目录中创建一个“test”环境。确保 envs 对将使用这些文件的用户拥有所有必要的权限。

    从那里作为另一个用户,只需将环境添加为内核。

    $ sudo su - <user-to-install-kernel-to>
    $ conda activate <test>
    $ python -m ipykernel install --user --name test \
             --display-name "Python (test)"
    

    注意.. 我相信我必须手动更新 kernelspec 以使其指向正确的 python 环境?‍♂️

    方法2

    或者,只需创建环境的副本

    $ conda env export --name test > environment.yml
    $ sudo su - customer
    $ conda env create --name cust-env-copy --file environment.yml
    $ python -m ipykernel install --user --name cust-env-copy \
             --display-name "Python (test)"
    

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 2014-08-31
      • 2021-05-27
      • 2019-10-29
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 2020-08-04
      相关资源
      最近更新 更多