【问题标题】:Do I need to install Jupyter notebook in every virtual environment?我需要在每个虚拟环境中安装 Jupyter notebook 吗?
【发布时间】:2019-03-05 02:25:27
【问题描述】:

我使用pipenv 将我的数据科学项目隔离到虚拟环境中。但是,运行 Jupyter 笔记本并不会访问本地环境,而是使用默认的 IPyKernel。我有seen,您可以从环境中注册虚拟环境,但这需要安装本身需要 Jupyter 的 ipykernel 包!

有没有办法避免这种情况,只为所有虚拟环境使用一个 Jupyter 安装?

【问题讨论】:

  • No.. 你必须为每个 virtualenv 安装单独的 jupyter notebook。激活 virtualenv 后,为该特定 virtualenv 安装的 jupyter notebook 将在路径中可用。
  • 知道为什么会这样吗?似乎很浪费磁盘空间,需要为每个新项目配置附加组件等...
  • pip install 将所有文件放在 virtualenv 的 site_packages 中。特定 virtualenv 中可用的所有依赖项将仅在该特定 jupyter notebook 实例中可用。
  • 这让我想到了将虚拟环境的 site_packages 添加到 Python 路径中。这会不会很遗憾?

标签: jupyter-notebook pipenv virtual-environment


【解决方案1】:

通常,您只需安装一次 jupyter,然后在您的虚拟环境中执行以下操作:

pip install ipykernel  
python -m ipykernel install --user

当您运行多个 Python 版本时,这还不够。
这里有一个指南试图解决这个问题:
https://medium.com/@henriquebastos/the-definitive-guide-to-setup-my-python-workspace-628d68552e14

它不是 100% 故障保护,但它可以帮助您避免一直重新安装 jupyter notebook。

【讨论】:

  • ipykernel 依赖于 jupyter-core,所以这个 effectivley 只是再次安装 Jupyter。
【解决方案2】:

我发现单独为每个环境重新安装jupyter时几乎没有问题:即pip install jupyter jupyterlab在新环境中。

我遇到了多个问题(使用和不使用 Conda),当您在单元格中使用 !pip install a_package_name 时,Jupyter 会将软件包安装到不同的 python 环境中。 shell 环境仍然会跟踪非环境 python,你可以通过比较 !which python

的输出来判断这一点
import sys
sys.executable

因此,当您尝试导入包时,它不可用,因为单元使用环境 python/ 内核(因为它检测到 venv 目录)。

【讨论】:

    【解决方案3】:

    我找到了一个解决方法,我希望得到反馈。我通过添加到.bashrc/.bash_profile 更改了 pipenv 以将虚拟环境安装到工作目录中:

    export PIPENV_VENV_IN_PROJECT=1
    

    现在打开 Jupyter 笔记本时,我只需将虚拟环境的包添加到 Python 路径:

    import sys
    sys.path.append('./.venv/lib/python3.7/site-packages/')
    

    这是一个糟糕的主意吗?

    【讨论】:

    • 这是一个问题,不是答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2019-06-13
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多