前言
pypi-server是pip源的一款搭建方案,支持私有pip源分发和上传。官方文档见地址
安装
直接使用pip install pypiserver即可,但需注意pypi-server要求python3.6+。因此若仍然使用2.7的版本,则需先升级到3.下面以升级到3.7.3为例讲述,可跳过。
1 | wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz |
同时升级pip
1 | vim ~/.bashrc |
添加密码授权
服务端
1 | pip install passlib |
填写用户名及密码,密码在客户端进行pip包上传和下载时需要。
客户端
1 | vim ~/.pypirc |
填写htpasswd创建时的账户及密码
后台常驻
pypi-server常驻方案官方推荐systemd和supervisor,supervisor不支持python3,这里采用systemd方案。
1 | cd /etc/systemd/system |
启动服务
1 | systemctl start pypi |
若启动失败使用journalctl -u,shift+g跳转到日志末尾查看具体日志.
主要是设定好监听端口,如这里单独8000,以及packages存储目录。
使用nginx作反向代理
监听80端口重定向到443,在443配置里转发到pypi-server的8000端口(其它端口同理)
1 | upstream pypi { |
这里重新启用了一个二级域名pypi.svinvy.com,同样需添加域名解析+ssl证书更新。
pip包上传
pip包可使用setup tool或twine上传,这里以twine为例.若无安装twine,则先安装
1 | pip install twine |
创建pip包,主要是LICENSE、init.py、pyprobject.toml以及readme.md等几个文件不可缺失,在__init__.py将package内模块导出。参考目录如下
- PYTHON
- asmodule
- dist
- init.py
- LICENSE
- xxx.py
- pyproject.toml
- readme.md
- asmodule
build pip包,注意需使用-m,限定起始路径。最后输出dist目录。
1 | cd path/to/your/pip/sources code |
上传
1 | twine upload dist/* |
若绕过了”添加密码授权”操作,则这里会报403