Jupyter Notebook,如何在正确的conda环境中执行系统Shell命令?

时间:2019-02-04 15:16:14

标签: python jupyter-notebook

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

今天我碰到了这一行:

! pip install kaggle --upgrade

在执行单元(正确激活work_env内核)后,pip在我的基本环境中安装了kaggle软件包。预期的结果是将此软件包安装在我的work_env中。关于如何使Jupyter Notebook在“正确的”环境中执行Shell命令的任何想法?

1 个答案:

答案 0 :(得分:1)

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

import sys

!$sys.executable -m pip install kaggle --upgrade

sys.executable返回当前正在运行的python解释器的路径。使用$将该变量传递到终端(!在终端上运行命令)。

  

别名就像使用!进行系统调用一样扩展Python变量。要么 !!这样做:所有以“ $”为前缀的表达式都会被扩展。有关语义规则的详细信息,请参阅PEP-215

来自https://ipython.org/ipython-doc/3/interactive/magics.html

-m用于将库模块(在这种情况下为pip)作为脚本运行(选中python -h)。将pip作为脚本运行,可以确保您使用的是链接到当前python解释器的pip,而不是系统变量指定的pip。

因此,通过这种方式,您可以确定pip在正在使用的同一python解释器(当前环境中已安装)上安装依赖项,从而达到了目的。