python - Jupyter notebook,如何在正确的conda环境下执行系统shell命令?

标签 python jupyter-notebook

我目前在使用 jupyter notebook 和系统 shell 命令时遇到了一些问题。我使用 nb_conda_kernels 能够从在基本环境中启动的 jupyter 笔记本访问我的所有 conda 环境,这在我的大多数用例中都非常有效。为简单起见,假设我有 2 个环境,一个是基础环境,一个名为 work_env。我在基础环境中启动 jupyter notebook,并在打开我正在使用的 notebook 时选择 work_env 内核。

今天我遇到了这条线:

! pip install kaggle --upgrade

执行单元后(正确激活了 work_env 内核),pip 在我的基础环境中安装了 kaggle 包。预期的结果是在我的 work_env 中安装这个包。关于如何使 shell 命令在 jupyter notebook 的“正确”环境中执行的任何想法?

最佳答案

尝试指定当前的 python 解释器。

import sys

!$sys.executable -m pip install kaggle --upgrade
sys.executable返回当前正在运行的 python 解释器的路径。 $将该变量传递给您的终端(! 在终端上运行命令)。

Aliases expand Python variables just like system calls using ! or !! do: all expressions prefixed with ‘$’ get expanded. For details of the semantic rules, see PEP-215


来自 https://ipython.org/ipython-doc/3/interactive/magics.html-m用于将库模块(在本例中为 pip)作为脚本运行(检查 python -h)。运行pip作为一个脚本,可以保证您使用的是链接到当前 python 解释器的 pip,而不是系统变量指定的 pip。
因此,通过这种方式,您可以确定 pip 正在将依赖项安装在您正在使用的同一个 python 解释器上(安装在您当前的环境中),这可以解决问题。

关于python - Jupyter notebook,如何在正确的conda环境下执行系统shell命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519130/

相关文章:

hyperlink - 跨越多个 Jupyter 笔记本的目录

machine-learning - 这些 F 分数意味着什么?使用 SelectKBest 功能

jupyter-notebook - Julia - 在 Jupyter Notebook 中使用包的开发版本

css - 笔记本中的中心输出(绘图)

python - Python-如何通过socket.makefile执行套接字通信?

python - sqlalchemy 中的多个/拆分类关联

debugging - 有没有办法跳转到 iPython/Jupyter 笔记本中包含错误的行?

python - Django 1.7 - "No migrations to apply"在 makemigrations 后运行迁移时

python - 如何暂停程序直到按下按钮

python - conda 和 pip 根本不工作