gpt4 book ai didi

python - pip 总是重新安装压缩包,即使已经安装

转载 作者:行者123 更新时间:2023-11-28 18:57:55 27 4
gpt4 key购买 nike

我正在构建一个 requirements.txt 文件,以通过 pip 在我的团队中部署一组 Python 包。我已将包本身保存在本地服务器上以尽量减少互联网下载,所以我在一个文件夹中有一堆轮子和 gz/zip 文件。

示例测试.txt:

packages\networkx-2.3.zip
packages\cx_Oracle-7.1.3-cp37-cp37m-win_amd64.whl
packages\SQLAlchemy-1.3.3.tar.gz

对于 whl 文件,pip 会正确地跳过已经安装的包,但对于 gz/zip 文件,它总是会重新安装它们。

这是我通过 pip 运行 test.txt 文件时得到的结果:

λ pip install -r test.txt
Processing c:\users\xxxx\dev\python deploy\packages\networkx-2.3.zip
Processing c:\users\xxxx\dev\python deploy\packages\sqlalchemy-1.3.3.tar.gz
Requirement already satisfied: cx-Oracle==7.1.3 from file:///C:/Users/xxxx/dev/Python%20deploy/packages/cx_Oracle-7.1.3-cp37-cp37m-win_amd64.whl in c:\users\xxxx\appdata\local\programs\python\python37\lib\site-packages (from -r test.txt (line 2)) (7.1.3)
Requirement already satisfied: decorator>=4.3.0 in c:\users\xxxx\appdata\local\programs\python\python37\lib\site-packages (from networkx==2.3->-r test.txt (line 1)) (4.4.0)
Installing collected packages: networkx, SQLAlchemy
Found existing installation: networkx 2.3
Uninstalling networkx-2.3:
Successfully uninstalled networkx-2.3
Running setup.py install for networkx ... done
Found existing installation: SQLAlchemy 1.3.3
Uninstalling SQLAlchemy-1.3.3:
Successfully uninstalled SQLAlchemy-1.3.3
Running setup.py install for SQLAlchemy ... done
Successfully installed SQLAlchemy-1.3.3 networkx-2.3

如何跳过重新安装压缩包?

最佳答案

此行为是预期的,因为 pip 无法将 wheel 文件哈希与已安装的包进行比较。将依赖项规范与 find-links 结合使用,而不是直接指向 test.txt 中的文件路径:

--find-links=packages
networkx==2.3
SQLAlchemy==1.3.3

或者将源 dists 转换为 wheels

$ pip wheel -r test.txt --wheel-dir packages

并在 test.txt 中使用生成的 wheels 代替源 dists:

packages\networkx-2.3-py2.py3-none-any.whl
packages\SQLAlchemy-1.3.3-cp36-cp36m-win_amd64.whl

这也应该会加快安装时间,因为轮子已经预制好了。但是,具有 C 扩展的包(如 SQLAlchemy 在这种情况下)将产生与平台或 python 无关的轮子,例如SQLAlchemy-1.3.3-cp36-cp36m-win_amd64.whl 只能在 64 位 Windows 上为 Python 3.6 安装。如果你的团队成员有不同的工作环境(例如一些使用 WIndows,一些使用 MacOS 等),你需要为每个环境提供预构建的轮子;在这种情况下,坚持使用 find-links 解决方案。

关于python - pip 总是重新安装压缩包,即使已经安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56044520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com