Python语言的厉害之处在哪里?个人认为在于它强大的内置模块和丰富的第三方库,可以帮助我们进行快速开发,毕竟是站在巨人的肩膀上。每天用大神写好的轮子开发,但自己造轮子的心一直躁动不已。最近静极思动,着手做一个好用的工具包开源一下,所以对Python发布包到pypi的流程研究了一下,这里做一下简单整理记录。当然由于Python更新发展速度很快,PyPI的发布机制也不断更新,可能方法会生效,有需要的话可以参考官网文档。

PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。PyPI推荐使用pip包管理器来下载第三方库。PyPI可帮助您查找和安装Python社区开发和共享的软件。包作者使用PyPI来分发他们的软件 。

一 注册PyPI账号


登录PyPI官网,注册界面基本如上图,填写个人信息即可注册。

二 创建个人Python库

有了账号我们也要准备好要分享的Python库,具体功能自己把握,只要是你觉得好玩好用的都可以上传。

三 编辑setup.py文件

在你要发布的包目录下创建setup.py文件,并参照如下内容进行编辑。

from distutils.core import setup
setup(
name = '下载的模块名', #要和包源代码文件名一致
version = '1.1.0',
py_modules = ['你的轮子名'],
author = '注册的账号',
author_email = 'xiaoming@163.com',
url = '一个地址,比如github轮子下载地址啥的 ',
description = '轮子的描述'
)


fromdistutils.coreimportsetup
setup(
name='下载的模块名',#要和包源代码文件名一致
version='1.1.0',
py_modules=['你的轮子名'],
author='注册的账号',
author_email='xiaoming@163.com',
url='一个地址,比如github轮子下载地址啥的 ',
description='轮子的描述'
)

setup脚本是python中使用Distutils来构建、分发以及安装模块活动的中心。它的目的是使得软件可以正确安装。

这里setup.py文件可以自行创建,也可以使用Kennethreitz大神(requests库的作者)的模板,使用的方法是:

git clone https://github.com/kennethreitz/setup.py
1
gitclonehttps://github.com/kennethreitz/setup.py

四 安装必要工具库

pip install --upgrade setuptools #原则上有pip一定有setuptools,但是可以尝试升级一下

pip install twine #一个简化将库发布到PyPI流程的工具


pipinstall--upgradesetuptools#原则上有pip一定有setuptools,但是可以尝试升级一下

pipinstalltwine#一个简化将库发布到PyPI流程的工具

五 打包上传

python setup.py sdist


pythonsetup.pysdist

sdist将会在setup.py同级目录创建一个dist文件夹,里面是压缩文件(Unix平台将会是tar包,Windows系统中将会是Zip压缩文件),这其中包含你的setup.py安装脚本和你的包模块。然后就可以解压安装了:

python setup.py install

pythonsetup.pyinstall

setup.py参数简单介绍:

python setup.py build     # 编译
python setup.py install     #安装
python setup.py sdist       #生成压缩包(zip/tar.gz)
python setup.py bdist_wininst   #生成NT平台安装包(.exe)
python setup.py bdist_rpm #生成rpm包
python setup.py bdist –help-formats  #支持rpm、gztar、bztar、ztar、tar、wininst、zip
然后需要安装twine,并使用twine上传到PyPI。
#安装twine
pip install twine
#上传
twine upload dist/* #需要输出PyPI账号密码

#安装twine
pipinstalltwine
#上传
twineuploaddist/*#需要输出PyPI账号密码

OK,完成,现在就可以直接通过pip来安装自己发布的库使用了。