我目前在使用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命令的任何想法?
答案 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解释器(当前环境中已安装)上安装依赖项,从而达到了目的。