conda 和 jupyter 之间的关系可能令人困惑。将 conda 视为您的环境,将 jupyter 视为任何其他包。一个包,您可以使用它开始一个进程然后提供服务。
要回答您的问题,它们应该安装在您的 conda 环境中。不幸的是,它比这复杂一点。所有用户都可以使用这些扩展。我没有亲自测试过在不同环境中拥有更多扩展的单个用户(如果可能,但如果我这样做会更新答案)。
如果它有帮助,这就是文档对此事的看法:
要安装 jupyter_contrib_nbextensions 笔记本扩展,需要三个步骤。首先,需要安装 Python pip 包。然后,需要将笔记本扩展本身复制到 Jupyter 数据目录。最后,可以使用内置的 Jupyter 命令启用已安装的笔记本扩展,或者更方便地使用作为此 repo 的依赖项安装的 jupyter_nbextensions_configurator 服务器扩展。
假设您通过 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
可以克隆 root 以复制 root 环境,或者 base 为基础环境。/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 环境♂️</p>
方法二
或者,只需创建环境的副本
$ 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)"