内网 Nexus 离线 PyPI 镜像搭建全攻略(含 PyTorch CUDA 版)
前言:最近在一个与外网完全物理隔离的内网环境里部署 Python 项目,第一道坎就是
pip install根本无法联网。折腾了一圈,最终选定 Sonatype Nexus Repository Manager 作为私有 PyPI 镜像站——它免费、成熟、权限管理完善,而且同一套 Nexus 实例还能顺手管 Maven、npm。本文记录完整的搭建流程,希望帮你少踩些坑 🤗
📋 前置说明
版本一致性非常重要!Python 在打包时会根据版本和平台生成对应的
.whl文件名(如cp311-win_amd64),跳板机和内网机版本不一致会导致包无法安装。
🏗️ 第一步:在 Nexus 中创建仓库
登录 Nexus 管理后台(默认地址 http://<Nexus_IP>:8081),进入 Repository → Repositories → Create repository,依次创建以下两个仓库:
💡 扩展提示:如果未来 Nexus 恢复联网,可再添加一个
pypi-proxy代理仓库并加入 group,即可实现自动拉取 + 本地缓存,无需修改开发机任何配置。
📦 第二步:在外网跳板机下载离线包
在一台能访问公网的 Windows 机器(Python 版本与内网机一致)上执行:
执行完毕后,d:\PyPI\offline_packages 目录中将包含 .whl / .tar.gz 格式的所有离线安装包。
⚠️ PyTorch 用户注意:
--extra-index-url https://download.pytorch.org/whl/cu121是下载带 CUDA 12.1 支持的 PyTorch 专属包的关键参数,缺少它只会下载到 CPU 版本。
🚛 第三步:将离线包拷入内网
将 offline_packages 整个文件夹通过 U 盘 或内网文件共享拷贝到内网机器上。
🔧 第四步:在内网机上安装 twine
在内网机上打开命令行,进入 offline_packages 所在目录,执行离线安装:
--no-index 告诉 pip 不要尝试访问任何网络源,--find-links 指定本地目录作为包来源,两者配合实现完全离线安装。
🚀 第五步:批量推送离线包至 Nexus
使用 twine 将 offline_packages 中的所有包一次性上传到 Nexus pypi-local 仓库:
上传完成后 Nexus 会自动重建索引,稍等片刻即可在管理界面的包列表中看到所有已上传的包。
⚙️ 第六步:配置开发机 pip 指向内网 Nexus
在 Windows 上,pip 的全局配置文件路径为:
如果文件不存在,手动新建,写入以下内容(将 <Nexus_IP> 替换为实际 IP):
trusted-host是在使用 HTTP(而非 HTTPS)时必须配置的选项,告知 pip 信任该主机,否则会因 SSL 验证失败而报错。
✅ 第七步:验证安装
配置完成后,在内网开发机执行:
如果 pip 完全从内网 Nexus 拉取包且无任何网络错误,说明整套流程搭建成功 🎉
🐛 常见问题排查
📝 总结
整个流程的核心逻辑其实很清晰:
- 跳板机(有网)用
pip download把所有依赖打包成文件 - U 盘/共享把文件搬进内网
- Nexus 作为私有仓库托管这些文件
- 开发机通过
pip.ini把 Nexus 当作 PyPI 源使用
一次搭建,团队所有成员都能受益,后续新增依赖只需重复「下载 → 上传」两步即可。
有问题欢迎评论区交流 💬
© 念舒·CC BY-NC-SA 4.0
转载请注明:blog.nianshu2022.cn/blog/nexus-pypi-offline-mirror
相关推荐
Windows 离线安装 Docker Desktop 完全指南(含常见报错解决)
在无法联网的内网环境中,如何一步步完成 Docker Desktop 的安装?本文涵盖完整离线安装流程,并重点解决 WSL 版本过低导致 Docker 无法启动的问题。
企业微信实现情侣每日定时推送全攻略!
教你如何利用企业微信API和Python脚本,搭建一个专属的情侣每日定时推送服务,包含天气、纪念日等功能。
VMware 安装 CentOS 7.5 操作系统
详细图文教程,手把手教你在 VMware Workstation 中安装 CentOS 7.5 操作系统,包含网络配置与分区设置。