生产内网没有外网出口,pip install -r requirements.txt 每条都报 Could not find a version that satisfies the requirement。换一台公网机器执行同一条命令立刻成功。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,pip 默认只认索引地址,内网既连不上 pypi 也连不上镜像,解析阶段就失败了。把包提前下载成本地 wheel 集合,再用 --no-index 断掉网络查找,安装时完全不碰索引。

「离线安装依赖」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。改完顺手把文档补一句,省得下次自己重新推一遍。

pip download -d ./wheels -r requirements.txt
pip install --no-index --find-links=./wheels -r requirements.txt

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

具体做法是,在一台同架构同 Python 版本的联网机器上 pip download 全部依赖到本地目录;把目录整体拷进内网 安装时用 --find-links 指向它;加 --no-index 禁止任何网络请求;平台相关的包用 --platform 和 --python-version 指定目标环境 避免下到本机专用 wheel。

最后用这个标准收尾,内网机器安装过程没有任何网络请求 装完 pip freeze 与联网机器的基线一致。

作者 9823189