我对conda环境和jupyterhub之间的关系有点困惑。
正如jupyterhub文档所说它可以从conda安装。所以可以使用一些conda环境(例如环境“root”)并从中做“conda install jupyterhub”。
在同一环境中“活着”jupyter。在此环境中安装nb_conda可以在笔记本中选择内核和其他conda环境。
我的问题是关于像nbextensions和ipywidgets这样的软件。它们应该在哪里?在与jupyterhub相同的环境中或在环境中对应新笔记本?
答案 0 :(得分:0)
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命令来启用已安装的笔记本扩展程序,或者通过使用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)从需求文件复制环境。别忘了,您还必须将环境添加为内核。
在共享位置创建环境,然后让两个用户将其添加为内核。
conda create -p /home/envs/test --clone root
可以克隆root以复制根env,或为基本环境的基础。 / home / envs / test将在“ envs”目录中创建一个“测试”环境。确保envs对将要使用这些文件的用户具有所有必要的权限。
从那里以另一个用户的身份,只需将环境添加为内核即可。
$ sudo su - <user-to-install-kernel-to>
$ conda activate <test>
$ python -m ipykernel install --user --name test \
--display-name "Python (test)"
注意..我相信我必须手动更新kernelspec才能使其指向正确的python环境?♂️
或者,只需创建环境的副本
$ 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)"