【问题标题】:Run in Conda environment without pip-installed packages在没有安装 pip 的包的情况下在 Conda 环境中运行
【发布时间】:2021-11-03 16:56:32
【问题描述】:

我正在创建一个 Conda 环境,并希望确保它允许任何人在我的存储库中运行脚本,而无需单独安装任何东西。但是,我在我的机器上 pip installed 了一些软件包,所以,如果我理解正确的话,我的一些导入可能会起作用,因为我 pip 安装了它们,而不是因为它们安装在 Conda 环境中。

例如,假设我用conda create --name my_env python=3.8.8 创建了一个环境。这不应该安装 Pandas,但如果我运行 import pandas as pd,它可以工作。我相信这是因为我已经安装了 Pandas。我的问题是:

如何测试脚本是否仅适用于 conda 环境中安装的包?

【问题讨论】:

    标签: python pip conda


    【解决方案1】:

    您可以仅根据您的 conda 安装历史创建一个 yaml 文件:

    conda env export --from-history --name my_env > myenv.yml
    

    从中创建一个新的 conda 环境,您可以使用它来测试您的脚本:

    conda env create --name conda_only --file myenv.yml
    

    【讨论】:

      【解决方案2】:

      Python 具有忽略 PYTHONPATH (-E) 和默认系统级或用户级 site-packages (-S) 的标志,以及一个组合标志 (-I) 两者都可以(参见 python -h )。尝试使用此类标志与系统隔离。类似的,

      conda run -n my_env python -I script.py
      

      另外,应该澄清的是,pip install 仅在您使用--user 标志时才会出现这样的问题,该标志会触发用户级别的软件包安装或其他位置(例如,--root 或--prefix 标志)并设置 PYTHONPATH 以使它们可访问。

      【讨论】:

        猜你喜欢
        • 2016-02-14
        • 2021-02-19
        • 2021-10-05
        • 2022-08-03
        • 2019-09-02
        • 2019-07-09
        • 2019-01-13
        • 2021-12-22
        • 1970-01-01
        相关资源
        最近更新 更多