为什么 pip 在安装你的包之前先下载构建依赖
源码分发可能需要构建环境和额外的依赖。即使目标归档已经在本地,这些下载仍是安装过程的一部分。
本地源码归档仍然可能需要网络访问。在 pip 能够安装它之前,pip 可能需要一个构建后端和若干支持包来生成 wheel。
在这个顺序中定位失败点:获取目标归档、安装构建需求、执行后端,然后安装生成的包。后端钩子可能请求额外的构建需求;这些与包的运行时依赖是分开的。
确定 pip 仍然需要的产物
在“Installing build dependencies”处记录失败的包和 URL。检查生效的索引、代理路由、账户上下文以及该请求的信任关系,使用已安装 pip 版本中有文档记录的设置。此前的成功下载并不能证明可以访问每一台主机或每个辅助程序的环境。若允许该路由,公开的构建需求可以使用 HTTP 代理列表 中的 HTTP 候选;保留所需的索引和信任策略。历史上使用 setup.py 的下载配方可能使用不同的子进程。
如果另一台机器安装成功,请先比较所选产物。它的 Python 版本或平台可能有兼容的预构建 wheel,而这台机器选择了源码分发,因此需要构建工具。
有意提供构建环境
--no-build-isolation 会把必要构建依赖的责任转移给你。它并不能修复代理认证或证书信任。本地安装的后端可能掩盖缺失或不兼容的需求。
对于有意进行的离线构建,请通过已批准的流程为项目和平台准备目标产物、构建需求以及所需的工具。仅包含源码归档的目录是不完整的。把失败的需求和阶段保留在报告中,以便修正路由或准备好的产物集。