python有非常多的第三方包,这些包提供了非常丰富的功能。可以通过pip install来安装需要的包。而对于一个多pythoner的团队,内部私有pypi仓库是非常重要的。内部仓库有两大优势:
一,在企业内部,多人团队协同开发,特别是近几年微服务模式的流行,为了减少公有功能(如统一账号认证,通知消息发送,员工信息获取等等)的重复开发,建议大家封装好内部python包然后供其他成员使用。
二,如今容器化已经比较普遍,使用容器部署python应用时,必不可少的一步就是安装依赖包,一般企业都会在生产环境禁止服务器直接访问外部网络,这就导致无法通过官方源来安装python包。即使没有禁止访问,也会因为某些原因导致使用官方源安装包时速度非常慢。
本人通过对比了目前比较常见的pypi私有仓库系统,最终选择了devpi(https://github.com/devpi/devpi)。选择devpi有两点考虑:
1.devpi支持使用豆瓣、清华等镜像源作为下载源,当安装的包在devpi-server不存在时,devpi会先从指定的下载源下载并缓存以此保证后续的下载速度。
2.devpi支持缓存,只要安装一次,这个包就会缓存在devpi服务端,以后安装python包时将直接从devpi服务端下载,这点在企业生产环境将非常高效。只需要允许devpi服务器访问豆瓣或者清华源地址即可为生产环境服务器提供稳定高速的pypi包下载服务。
使用私有pypi仓库安装包
devpi分为三个部分:
devpi-server: 用于索引以及基于用户或团队的索引,这些索引可以从pypi.org站点或者豆瓣、清华源继承
devpi-web: devpi-server的插件,提供web和搜索界面
devpi-client: 命令行工具,用于创建用户,使用索引,上传包等功能
安装过程本文就不说明了,官方文档非常详细,看文档就好了。这里说两点比较实用的功能
1.设置镜像仓库的镜像源,如豆瓣源、清华源
使用客户端连接到devpi-server后执行命令devpi index root/pypi mirror_url="https://pypi.doubanio.com/simple/"devpi index root/pypi mirror_url="https://pypi.tuna.tsinghua.edu.cn/simple/"
2.修改web搜索界面
devpi的默认web页面比较简陋,可以通过修改site-packages/devpi_web/templates/root.pt来做适当的定制,如企业名称、企业logo等
默认web界面
简单定制后的web界面