【问题标题】:Jupyter notebook, how to execute system shell commands in the right conda environnment?Jupyter notebook,如何在正确的conda环境下执行系统shell命令?
【发布时间】:2019-02-04 15:16:14
【问题描述】:

我目前在使用 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 jupyter-notebook


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 非常感谢您的回答。它完美地工作。您是否介意详细解释它的作用,或者编辑您的答案以包含该信息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2019-06-06
    • 1970-01-01
    • 2023-03-16
    • 2020-04-03
    • 2021-05-27
    • 2021-01-24
    相关资源
    最近更新 更多