私有仓库选型
常见开源项目
服务 | 镜像 | 代理 | 发布 | UI | Docker | 特点 |
---|---|---|---|---|---|---|
warehouse | ✘ | ✘ | ✔ | ✔ | ✔ | 官方PYPI项目 |
bandersnatch | ✔ | ✘ | ✘ | ✘ | ✘ | 提供全量同步的服务 |
pypiserver | ✘ | ✔(重定向) | ✔ | ✘ | ✔ | 最简单的代理、发布服务 |
devpi-server | ✘ | ✔ | ✔ | ✘ | ✘ | 代理、缓存方面非常出色 |
localshop | ✘ | ✔(重定向) | ✔ | ✔ | ✔ | 比较完善,开箱即用 |
pyshop | ✘ | ✔(重定向) | ✔ | ✔ | ✔ | 部署简单、配置丰富 |
上表中的概念解释:
- 镜像指是否提供定时全量同步的镜像服务。
- 代理是指下载时会自动搜寻官方的源或其它镜像,不会全量同步。 上面列出的几个有代理功能的服务,细节各不相同。比如,是真的代理,还是假的,仅仅只是URL重定向。 这两种方式的区别是,当客户端所在的机器无法访问外部源时(比如隔离外网的工作站),前者可以正常工作,而后者不行。 当然,严格地说,重定向并不能称为代理,只是对服务端来说形式类似 。
- 发布指是否允许发布私有的Python包。
- UI指是否包含某种形式的UI界面,主要是浏览器中的网页界面。 只有简陋UI的服务,也被认为是没有UI,比如devpi-server。
- Docker指在源码库中,是否自动支持Docker技术,自带Dockerfile、docker-compose.yml等文件。 即使不支持Docker的服务,也可以自制;而已经支持的服务,也只是调试方便,要实用前往往也需自制。
企业级仓库 —— Nexus Repository OSS
Nexus Repository OSS 是一个开源的仓库管理系统,提供了更加丰富的功能,而且安装、配置、使用起来也更加简单方便。 官方网站
它可以管理以下形式的仓库:
- Bower
- Docker
- Git LFS
- Maven
- npm
- NuGet
- PyPI
- Ruby
- Gems
- Yum
- Proxy
其中,PyPI类的服务,支持三种:
- proxy,提供代理服务。
- hosted,提供私有包的发布服务。
- group,组合以上两类的多个服务到一起,通过同一个URL对外提供。
私有仓库使用
包下载
pip命令指定仓库地址
pip install flask -i http://<repository-path>/simple |
或修改用户pip配置 ~/.pip/pip.conf
[global] |
包发布
修改当前用户.pypirc
文件 ~/.pypirc
(没有请创建)
[distutils] |
指定发布包仓库
python setup.py sdist upload -r privaterepo |
参考: