当前位置:首页>python>构建企业内部轻量级Python包源管理系统

构建企业内部轻量级Python包源管理系统

  • 2026-10-10 16:30:07
构建企业内部轻量级Python包源管理系统

一、技术选型 (DevPi vs Nexus)

当然Python包管理源还有官方的PyPI , 但是这里主要说在企业内部构建自己的私有包管理源

场景
推荐方案
说明
中小型Python团队
DevPi
Python专用
,轻量、纯Python且默认支持代理
企业多语言环境
Nexus Repository 3
多语言混合企业级功能,具有完善的权限管理

二、DevPi 安装部署

Python 项目部署建议独立虚拟环境

1、初始化虚拟环境

python3 -m venv /data/python-venv/venv-devpi-server/

2、安装相关依赖

pip3 install devpi-server devpi-client devpi-web pyramid pyramid-chameleon

3、初始化 devpi 环境

# 创建仓库目录mkdir -p /data/releases/python-devpi-server# 建立独立用户useradd --system --home /data/releases/python-devpi-server --shell /sbin/nologin devpi# 初始化仓库目录chown -R devpi:devpi /data/releases/python-devpi-serversudo -u devpi /data/python-venv/venv-devpi-server/bin/devpi-init --serverdir=/data/releases/python-devpi-server

注意初始化的日志

2026-02-10 14:35:43,894 INFO  NOCTX Loading node info from /data/releases/python-devpi-server/.nodeinfo2026-02-10 14:35:43,894 INFO  NOCTX generated uuid: 24745d088d88465886efd00e0007c6392026-02-10 14:35:43,895 INFO  NOCTX wrote nodeinfo to: /data/releases/python-devpi-server/.nodeinfo2026-02-10 14:35:43,899 INFO  NOCTX DB: Creating schema2026-02-10 14:35:43,985 INFO  [Wtx-1] setting password for user 'root'2026-02-10 14:35:43,985 INFO  [Wtx-1] created user 'root'2026-02-10 14:35:43,985 INFO  [Wtx-1] created root user2026-02-10 14:35:43,985 INFO  [Wtx-1] created root/pypi index2026-02-10 14:35:43,989 INFO  [Wtx-1] fswriter0: committed at 0

如果给上面的初始化命令添加 --no-root-pypi 参数日志如下

2026-02-10 16:28:50,135 INFO  NOCTX Loading node info from /data/releases/python-devpi-server/.nodeinfo2026-02-10 16:28:50,135 INFO  NOCTX generated uuid: 947f1ad6d4cf494eb41436c19409839e2026-02-10 16:28:50,136 INFO  NOCTX wrote nodeinfo to: /data/releases/python-devpi-server/.nodeinfo2026-02-10 16:28:50,139 INFO  NOCTX DB: Creating schema2026-02-10 16:28:50,228 INFO  [Wtx-1] setting password for user 'root'2026-02-10 16:28:50,228 INFO  [Wtx-1] created user 'root'2026-02-10 16:28:50,229 INFO  [Wtx-1] created root user2026-02-10 16:28:50,232 INFO  [Wtx-1] fswriter0: committed at 0

注意区别

少了 [Wtx-1] created root/pypi index

这是本次的核心,默认不创建这个 root/pypi 那么仓库就是一个纯私有 的Python源仓库。 不会从Python的官方 PyPi 同步索引信息

这里默认创建了root 用户,这里的root用户不是Linux主机的root用户,是devpi-server仓库的root用户,密码默认是空的,要设置密码的话,在初始化命令后面接 --root-passwd some-passwd 即可

服务启动

这里直接给出systemd管理的service配置文件, 修改对应的路径之后就可以直接使用。

这里做了特殊设置,把日志输出到独立的日志文件,帮忙我们排查问题

# cat /etc/systemd/system/devpi-server.service[Unit]Description=devpi server (private PyPI repository)After=network.target[Service]Type=simpleUser=devpiGroup=devpiWorkingDirectory=/data/releases/python-devpi-serverExecStart=/data/python-venv/venv-devpi-server/bin/devpi-server --host=0.0.0.0 --port=3141 --serverdir=/data/releases/python-devpi-serverRestart=on-failureRestartSec=5# 日志重定向到文件StandardOutput=append:/var/log/devpi/devpi.logStandardError=append:/var/log/devpi/devpi.log[Install]WantedBy=multi-user.target

然后

  • • systemctl enable devpi-server.service 开启自启动
  • • systemctl start devpi-server.service 启动服务

然后通过浏览器访问 http://172.31.222.222:3141 就能打开web页面预览

devpi 使用

默认这里是没有索引的,然后登录创建新的索引,不设置 bases 继承源

# 登录devpi login root# 检查索引(这里为空)devpi index -l# 核心设置 (不添加 bases= 效果一样)devpi index -c colinspace bases=# 检查索引devpi index -lroot/colinspace# 查看索引详情devpi index root/colinspace

本地上传

构建本地sdk包之后,先记得登录下 devpi server

# 安装客户端命令pip install devpi-client# 登录devpi login root

核心上传命令如下

devpi upload --from-dir dist/file_upload of colinspace_sdk-0.2.0-py3-none-any.whl to http://172.31.2.25:3141/root/colinspace/file_upload of colinspace_sdk-0.2.0.tar.gz to http://172.31.2.25:3141/root/colinspace/

然后登录DevPi Web页面就可以看到刚刚上传的 SDK了

后续使用的时候直接指定源安装

pip install -i http://172.31.222.222:3141/root/colinspace/+simple/ colinspace-sdk --trusted-host 172.31.222.222

感谢你阅读文档,如有收获可以点赞、关注加收藏^_^  ,谢谢

有问题请后台留言,看到后会第一时间回复您。

最新文章

随机文章