Skip to content

部署 PyPI 私有服务器

Python 包索引(PyPI)私有服务器可以用于管理企业内部 Python 包。以下是几种在 Windows 上部署 PyPI 私有服务器的方法:

方法一:使用 DevPI(推荐)

DevPI 是一个功能强大的 PyPI 私有服务器和打包/测试工具。

安装步骤:

  1. 安装 Python 和 pip
  • 确保已安装 Python 3.6+(从Python 官网下载)
  • 更新 pip:
cmd
python -m pip install --upgrade pip
  1. 安装 DevPI
cmd
pip install devpi-server devpi-web
  1. 初始化服务器
cmd
devpi-init --serverdir C:\devpi-server
  1. 启动 DevPI 服务器
cmd
devpi-server --serverdir C:\devpi-server --start
  1. 启动 Web 界面(可选)
cmd
devpi-web --serverdir C:\devpi-server
  1. 配置为 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 兼容服务器。

安装步骤:

  1. 安装 pypiserver
cmd
pip install pypiserver
  1. 创建包存储目录
cmd
mkdir C:\pypi-packages
  1. 启动服务器
cmd
pypi-server -p 8080 C:\pypi-packages
  1. 配置为 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 仓库。

安装步骤:

  1. 下载 Nexus
  1. 安装并运行
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
  1. 配置 PyPI 仓库
  • 访问 http://localhost:8081
  • 创建 PyPI 代理仓库(指向https://pypi.org
  • 创建 PyPI 宿主仓库(存储私有包)
  • 创建 PyPI 组仓库(合并多个仓库)

方法四:使用 Artifactory OSS

JFrog Artifactory 也支持 PyPI 仓库。

安装步骤:

  1. 下载 Artifactory
  1. 运行安装程序
  • 按向导完成安装
  1. 配置 PyPI 仓库
  • 访问 http://localhost:8082/ui/
  • 创建 PyPI 远程仓库、本地仓库和虚拟仓库

配置客户端使用私有服务器

  1. 临时使用私有源
cmd
pip install --index-url http://localhost:8080/simple/ some-package
  1. 永久配置私有源
cmd
pip config set global.index-url http://localhost:8080/simple/
  1. 上传包到私有服务器
  • 对于 pypiserver:
cmd
twine upload --repository-url http://localhost:8080/ dist/*
  • 对于 DevPI:
cmd
devpi upload

安全配置

  1. 启用认证
  • 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
  1. 启用 HTTPS
  • 使用反向代理(如 Nginx)配置 SSL
  • 或使用 IIS 配置 HTTPS

维护与管理

  1. 备份策略
  • 定期备份包存储目录
  • 对于 DevPI,备份C:\devpi-server目录
  1. 清理旧包
cmd
# DevPI清理旧包
devpi-server --serverdir C:\devpi-server --cleanup
  1. 监控
  • 监控磁盘空间使用情况
  • 设置日志轮转

性能优化

  1. 使用 SSD 存储
  • 将包存储目录放在 SSD 上
  1. 缓存配置
  • 配置代理仓库缓存公共包
  1. 调整 JVM 参数(Nexus/Artifactory)
  • 编辑nexus.vmoptionsartifactory.default

对于大多数 Python 开发者,DevPI 提供了最完整的 PyPI 私有服务器功能;pypiserver 适合简单需求;而 Nexus 和 Artifactory 适合需要统一管理多种类型包的企业环境。