为什么pip install requirements.txt会安装额外的软件包?

2024-06-03 01:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

运行良好,但我看到收集并安装了大量额外的软件包。为什么?是否根据所需软件包的需要对其进行标识并进行安装?如果是这样,我是否应该将它们包含在requirements.txt中


Tags: notxtsourcebinvirtualenvvenvpackagessite
3条回答

这可能是因为在requirements.txt中编写的lib具有依赖性。例如:如果您已将scipy作为需求编写numpy也将被安装,因为scipy依赖于numpy

对。这些包是您的依赖项的依赖项​.

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

嗯,对我来说,上述答案并非如此。Pip安装正在安装requirements.txt中没有的额外软件包。解决办法是:

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

运行conda安装pip。这将把pip安装到您的venv目录中

然后运行pip安装-r requerients.txt

上面的答案是从这里改编的:Using Pip to install packages to Anaconda Environment

相关问题 更多 >