【问题标题】:Why does pip install requirements.txt install extra packages?为什么 pip install requirements.txt 会安装额外的包?
【发布时间】:2021-02-27 10:29:06
【问题描述】:

我有一个存储库,其中包含膨胀的 requirements.tx,我想清理它。使用pipreqs,我将 requirements.txt 设置为我的存储库所需的最小包集。为了测试这一点,我设置了一个 virtualenv 来安装软件包,然后运行我所有的单元测试以确保它们令人满意。

virtualenv temp_venv --no-site-packages
source temp_venv/bin/activate
pip install -r requirements.txt

运行良好,但我看到收集并安装了一大堆额外的包。为什么?这些是否被所需的软件包标识为需要并因此安装?如果是这样,我应该将它们包含在 requirements.txt 中吗?

【问题讨论】:

  • 为了确保额外的包确实是依赖项,请尝试在您的 virtualenv 中运行命令 pip freeze -l > requirements.txt(注意 -l 标志,它使其仅引用当前 virtualenv 中的包. 如果它产生相同的输出,那就是依赖关系。如果不是,这意味着 pip 收集了你所有的包,而不仅仅是你当前工作的 virtualenv 上的包。

标签: python pip requirements.txt


【解决方案1】:

这可能是因为您在requirements.txt 中编写的库的依赖关系。例如:如果你写了scipy作为要求numpy也将被安装,因为scipy依赖于numpy

【讨论】:

    【解决方案2】:

    是的。这些包是您的依赖项的依赖项。

    但是不,您不应该直接指定它们。自动工具知道递归下载依赖项,这会大大增加维护开销。

    【讨论】:

      【解决方案3】:

      好吧,对我来说,上述答案并非如此。 Pip install 正在安装不在 requirements.txt 中的额外包。解决方案是:

      运行 conda create -n venv_name 和 conda activate venv_name,其中 venv_name 是您的虚拟环境的名称。

      运行 conda install pip。这会将 pip 安装到您的 venv 目录。

      然后运行 ​​pip install -r requeriments.txt

      以上答案改编自这里:Using Pip to install packages to Anaconda Environment

      【讨论】:

        猜你喜欢
        • 2020-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-21
        • 1970-01-01
        • 2017-08-10
        • 2020-07-31
        相关资源
        最近更新 更多