devpi开源pypi包缓存root/public vs root/pypi关系
在 devpi(一个强大的 Python 包索引服务器和缓存库)中,你看到的 root、root/public 和 root/pypi 并不是操作系统盘符里的“本地目录”,而是 devpi 服务器内部的“索引(Indices)”路径,它们就像是不同的“文件夹”或者“视图”,用来隔离和管理不同来源的 Python 包。
1. root (用户空间)
- 本质:这是 devpi 默认创建的超级管理员用户(User)的空间。
- 角色:在 devpi 中,所有的索引都必须归属于某个用户。
root用户是整个服务器的管理者。在这个路径下,可以创建很多不同的索引(比如下面的public和pypi)。
2. root/pypi (PyPI 官方镜像缓存)
- 本质:这是一个
type=mirror(镜像) 类型的索引。 - 作用:它直接对接官方的 PyPI (pypi.org)。
- 工作原理:
- 当你通过这个索引安装包时(例如
pip install requests),如果 devpi 服务器上没有,它会去官方 PyPI 下载,并缓存到本地。 - 下次你或者你的同事再安装同样的包时,devpi 直接从本地缓存提供,速度极快。
特点:只读,你不能手动把自己的私有包
upload(上传)到这个索引里。
3. root/public (复合/集成本地与线上的索引)
本质:这是一个
type=stage(阶段/通用) 类型的索引,并且它继承(bases)了root/pypi。作用:这是你平时开发、部署时最推荐使用的 pip 源地址。
工作原理:它把“你自己的私有包”和“官方的公有包”融合在了一起。
找包顺序:当你通过
root/public安装包时,devpi 会先在root/public本地找。如果找不到,它会顺着继承关系,去root/pypi(即官方 PyPI)里找。特点:可读写。你可以把公司内部研发的私有 Python 包上传到
root/public中。
4.总结
1 | [ root/public (复合索引:可上传私有包) ] |
- 如果你要配置
pip.conf下载包:请使用 **root/public**。这样既能装上官方的包,又能装上你们自己写的私有包。 - 如果你要发布(upload)自己的私有包:请发布到 **
root/public**(或者你在root下自己创建的其他 stage 索引)。