1. PyPI简介
The Python Package Index, abbreviated as PyPI (/ˌpaɪpiˈaɪ/) and also known as the Cheese Shop, is the official third-party software repository for Python.
PyPI是Python软件仓库,我们执行pip install
时就是从PyPI仓库中拉取的软件包。
相关文档:
2. 替换国内PyPI仓库
2.1. PyPI镜像源
国内使用python下载包,经常会遇到下载不了的情况,这时可以替换PyPI仓库。
目前国内靠谱的 PyPI 镜像源有:
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple/
- 阿里:https://mirrors.aliyun.com/pypi/simple/
- 豆瓣:https://pypi.douban.com/simple/
参考文档:PyPI 镜像使用帮助。
2.2. 临时使用
比如更新tensorflow,可以使用
1 | pip install tensorflow --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple |
两者的差别,在于使用的协议是http还是https。在最新的pip版本(>=7)中,使用镜像源时,会提示源地址不受信任或不安全。
2.3. Windows配置PyPI
1、创建目录和文件
1 | appdata%\pip\pip.ini |
2、pip.ini内容为:
1 | [global] |
2.4. Linux配置PyPI
1、创建目录和文件
1 | vi ~/.pip/pip.conf |
2、pip.conf内容为:
1 | [global] |
2.5. Anaconda配置PyPI
1 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ |
虽然修改了软件源,但是pip search
命令还是不能使用的,因为搜索软件使用的协议与安装软件不同。pip search
基于xmlrpclib实现,pip install
基于urllib2实现。
3. 打包Python软件包
3.1. 打包软件包
1、准备python项目
1 | . |
其中main.py内容为:
1 | if __name__ == '__main__': |
2、准备setup.py
1 | from setuptools import find_packages |
3、执行打包
1 | pip install setuptools |
打包说明:python setup.py bdist_wheel sdist
是Python中用来打包源代码的命令,生成的发布包保存在项目目录下的 dist 目录中。
这个命令一次生成两种包:
- bdist_wheel:创建一个二进制分发版的 “wheel” 归档文件。这是一种Python二进制模块分发格式,它比 egg 格式更加简单,更方便。这种分发包含已经编译好的Python源码,一般用于Python3.5以上的版本。
- sdist:创建一个源码分发版的 “source distribution” 归档文件(通常是.tar.gz或.zip)。这种包含Python的原始代码,下载后需要使用者自己编译。
3.2. 测试wheel包
1 | pip install dist/example-1.0.1-py3-none-any.whl |
4. 上传Python软件包到 devpi
4.1. 安装配置PyPI Server
首先,我们要有一个基于 devpi 的PyPI Server,安装配置方法参考文档:《使用Docker安装配置PyPI Server》
4.2. 上传软件包
1、下载安装devpi client
1 | pip install devpi-client |
2、指定PyPI Server
1 | devpi use http://192.168.56.101:3141 |
或者:
1 | devpi use http://192.168.56.101:3141/root/dev |
3、登录PyPI Server
1 | devpi login root --password=xxx |
4、上传Python软件包
1 | devpi upload --wheel |
想要带文档上传的话,参考文档Sphinx配置conf.py文件
1 | pip install sphinx |
4.3. 删除软件包
1 | devpi remove example |
4.4. 推送包到另外的索引
devpi push 命令是将包从一个索引推送到另外一个索引,例如将包example推送到root/dev
1 | devpi push example==1.0.1 root/dev |
5. 上传Python软件包到 pypi.org
5.1. 准备 pypi.org token
1、访问pypi.org,注册一个账号
2、在Account settings页面,Add API token
3、创建 pypi 配置文件 $HOME/.pypirc
1 | [pypi] |
5.2. 上传软件包
1、安装 twine
1 | pip install twine |
2、上传Python软件包
1 | twine upload dist/* |
参考文档: