部署 PyPI 私有服务器
Python 包索引(PyPI)私有服务器可以用于管理企业内部 Python 包。以下是几种在 Windows 上部署 PyPI 私有服务器的方法:
方法一:使用 DevPI(推荐)
DevPI 是一个功能强大的 PyPI 私有服务器和打包/测试工具。
安装步骤:
- 安装 Python 和 pip
- 确保已安装 Python 3.6+(从Python 官网下载)
- 更新 pip:
cmd
python -m pip install --upgrade pip
- 安装 DevPI
cmd
pip install devpi-server devpi-web
- 初始化服务器
cmd
devpi-init --serverdir C:\devpi-server
- 启动 DevPI 服务器
cmd
devpi-server --serverdir C:\devpi-server --start
- 启动 Web 界面(可选)
cmd
devpi-web --serverdir C:\devpi-server
- 配置为 Windows 服务(使用 NSSM)
cmd
nssm install DevPI-Server "C:\Python39\Scripts\devpi-server.exe" --serverdir C:\devpi-server
nssm install DevPI-Web "C:\Python39\Scripts\devpi-web.exe" --serverdir C:\devpi-server
nssm start DevPI-Server
nssm start DevPI-Web
方法二:使用 pypiserver(轻量级)
pypiserver 是一个最小化的 PyPI 兼容服务器。
安装步骤:
- 安装 pypiserver
cmd
pip install pypiserver
- 创建包存储目录
cmd
mkdir C:\pypi-packages
- 启动服务器
cmd
pypi-server -p 8080 C:\pypi-packages
- 配置为 Windows 服务(使用 NSSM)
cmd
nssm install PyPI-Server "C:\Python39\Scripts\pypi-server.exe" -p 8080 C:\pypi-packages
nssm start PyPI-Server
方法三:使用 Nexus Repository OSS
Sonatype Nexus 也支持 PyPI 仓库。
安装步骤:
- 下载 Nexus
- 从Sonatype 官网下载 Windows 版本
- 安装并运行
cmd
Expand-Archive -Path nexus-3.x.y-xx-win64.zip -DestinationPath C:\nexus
cd C:\nexus\nexus-3.x.y-xx\bin
nexus.exe /install
nexus.exe /start
- 配置 PyPI 仓库
- 访问
http://localhost:8081
- 创建 PyPI 代理仓库(指向https://pypi.org)
- 创建 PyPI 宿主仓库(存储私有包)
- 创建 PyPI 组仓库(合并多个仓库)
方法四:使用 Artifactory OSS
JFrog Artifactory 也支持 PyPI 仓库。
安装步骤:
- 下载 Artifactory
- 从JFrog 官网下载 Windows 版本
- 运行安装程序
- 按向导完成安装
- 配置 PyPI 仓库
- 访问
http://localhost:8082/ui/
- 创建 PyPI 远程仓库、本地仓库和虚拟仓库
配置客户端使用私有服务器
- 临时使用私有源
cmd
pip install --index-url http://localhost:8080/simple/ some-package
- 永久配置私有源
cmd
pip config set global.index-url http://localhost:8080/simple/
- 上传包到私有服务器
- 对于 pypiserver:
cmd
twine upload --repository-url http://localhost:8080/ dist/*
- 对于 DevPI:
cmd
devpi upload
安全配置
- 启用认证
- pypiserver:
cmd
pypi-server -p 8080 -P .htpasswd C:\pypi-packages
使用htpasswd
创建密码文件
- DevPI:
cmd
devpi user -c user1 password=123
devpi login user1 --password=123
- 启用 HTTPS
- 使用反向代理(如 Nginx)配置 SSL
- 或使用 IIS 配置 HTTPS
维护与管理
- 备份策略
- 定期备份包存储目录
- 对于 DevPI,备份
C:\devpi-server
目录
- 清理旧包
cmd
# DevPI清理旧包
devpi-server --serverdir C:\devpi-server --cleanup
- 监控
- 监控磁盘空间使用情况
- 设置日志轮转
性能优化
- 使用 SSD 存储
- 将包存储目录放在 SSD 上
- 缓存配置
- 配置代理仓库缓存公共包
- 调整 JVM 参数(Nexus/Artifactory)
- 编辑
nexus.vmoptions
或artifactory.default
对于大多数 Python 开发者,DevPI 提供了最完整的 PyPI 私有服务器功能;pypiserver 适合简单需求;而 Nexus 和 Artifactory 适合需要统一管理多种类型包的企业环境。