为什么 pip install requirements.txt 安装额外的包?
Why does pip install requirements.txt install extra packages?
我有一个包含膨胀的 requirements.txt 文件的存储库,我想清理它。使用 pipreqs 我已将我的 requirements.txt 设置为我的存储库所需的最小包集。为了测试这一点,我设置了一个 virtualenv 来安装包,然后 运行 我所有的单元测试以确保它们令人满意。
virtualenv temp_venv --no-site-packages
source temp_venv/bin/activate
pip install -r requirements.txt
运行很好,但我看到收集并安装了一大堆额外的软件包。为什么?这些是否被必需的包识别为需要,并因此安装?如果是这样,我是否应该将它们包含在 requirements.txt 中?
这可能是因为您在 requirements.txt
中编写的库的依赖性。例如:如果你写了 scipy
作为要求 numpy
也将被安装,因为 scipy
依赖于 numpy
.
是的。这些包是您的依赖项的依赖项。
但是不,你不应该直接指定它们。自动工具知道递归下载依赖项,这会显着增加维护开销。
好吧,对我来说,上述答案并非如此。 Pip install 正在安装不在 requirements.txt 中的额外软件包。解决方案是:
运行 conda create -n venv_name 和 conda activate venv_name,其中 venv_name 是您的虚拟环境的名称。
运行 conda 安装 pip。这会将 pip 安装到您的 venv 目录。
然后运行 pip install -r requeriments.txt
以上答案改编自这里:
我有一个包含膨胀的 requirements.txt 文件的存储库,我想清理它。使用 pipreqs 我已将我的 requirements.txt 设置为我的存储库所需的最小包集。为了测试这一点,我设置了一个 virtualenv 来安装包,然后 运行 我所有的单元测试以确保它们令人满意。
virtualenv temp_venv --no-site-packages
source temp_venv/bin/activate
pip install -r requirements.txt
运行很好,但我看到收集并安装了一大堆额外的软件包。为什么?这些是否被必需的包识别为需要,并因此安装?如果是这样,我是否应该将它们包含在 requirements.txt 中?
这可能是因为您在 requirements.txt
中编写的库的依赖性。例如:如果你写了 scipy
作为要求 numpy
也将被安装,因为 scipy
依赖于 numpy
.
是的。这些包是您的依赖项的依赖项。
但是不,你不应该直接指定它们。自动工具知道递归下载依赖项,这会显着增加维护开销。
好吧,对我来说,上述答案并非如此。 Pip install 正在安装不在 requirements.txt 中的额外软件包。解决方案是:
运行 conda create -n venv_name 和 conda activate venv_name,其中 venv_name 是您的虚拟环境的名称。
运行 conda 安装 pip。这会将 pip 安装到您的 venv 目录。
然后运行 pip install -r requeriments.txt
以上答案改编自这里: