阅读本文大约需要1.1分钟。
背景
很多公司级的Python项目不方便上传到公有仓库,这时候就需要搭建自己的私有pypi仓库了,这里如果只是团队部门小范围使用,推荐通过pypiserver搭建。
搭建私有仓库
安装pypiserver
pip install pypiserver
添加认证
使用htpasswd创建用户和密码,首先安装 passlib:
pip install passlib
创建htpasswd文件并创建一个用户(admin),并按照提示输入密码:
htpasswd -s htpasswd.txt admin
这里要注意的是:有些我们依赖的公有仓库中的packages在本地找不到,下载会超时,需要通过--fallback-url设置一个备选的镜像源:
pypi-server -p 2233 --fallback-url https://pypi.doubanio.com/simpl
如果不需要认证增加-P . -a .参数即可:
pypi-server -p 2233 -P . -a . --fallback-url https://pypi.doubanio.com/simple
上传Python包到pypi仓库
先创建~/.pypirc文件,并配置源的用户名密码:
[distutils]
index-servers =
local
[local]
repository: http://localhost:2233
username: admin
password: 123456
然后使用sdist命令创建源分发,使用twine上传
release:clean_pyc
python setup.py sdist bdist_wheel
twine upload -r local ./dist/*
clean_pyc:
find . -iname "*.pyc" -delete
find . -iname "__pycache__" | xargs rm -rf {} \;
在用Jenkins做持续集成的时候,twine有概率出现找不到配置文件的情况,这时候通过 --config-file 参数指定你机器上.pypirc的路径即可:
twine upload --config-file .pypirc -r local ./dist/*