上传python包到PyPI
一、前言
由于项目需要将API响应的XML内容解析成python对象,写了一个简单的xml转python的库,因为功能简单,细节处理也不好,文档也没有,没想也不好意思上传到pypi。
后来由于多个不同的独立的服务都需要这个转换功能,如果每个服务都把这个库放置于各自的目录下,维护起来很麻烦,才想到完善这个库,上传到PyPI,通过pip来统一管理。
二、创建账号
在PyPI正式站点和PyPI测试站点分别注册一个帐号,用于后面上传。为了便于记忆,我使用了相同的帐号和密码。
三、创建.pypirc配置文件
此文件主要用于上传包到PyPI时验证权限。在用户根目录下创建文件~/.pypirc,内容如下:
[distutils] index-servers = pypi pypitest [pypi] username:xxx password:xxx [pypitest] repository: https://testpypi.python.org/pypi username:xxx password:xxx
四、创建项目库
每个项目库下必须有一个setup.py文件,除此之外同样可以创建其他附加的如readme、license等用以项目描述和版权信息的文件。
可参考官方的说明文档:Creating a Source Distribution
下面以lazyxml库作为示例。
lazyxml项目库的结构
lazyxml/ |-- LICENSE |-- MANIFEST.in |-- Makefile |-- README.rst |-- demo | |-- compat.py | |-- dump.py | |-- load.py | `-- xml | |-- dump-fp.xml | |-- dump.xml | |-- gbk.xml | |-- namespace.xml | `-- normal.xml |-- docs | |-- Makefile | |-- changelog.rst | |-- conf.py | |-- index.rst | |-- lazyxml | | |-- builder.rst | | |-- dump.rst | | |-- dumps.rst | | |-- index.rst | | |-- load.rst | | |-- loads.rst | | `-- parser.rst | `-- make.bat |-- lazyxml | |-- __init__.py | |-- builder.py | |-- parser.py | `-- utils.py `-- setup.py
项目文件说明
LICENSE
项目版权许可证说明
MANIFEST.in
打包时包含/排除指定规则的文件
Makefile
Makefile脚本简化操作
- help: 帮助
- install: 安装包
- pack: 打包
- upload: 打包上传到PyPI正式站点
- test: 打包上传到PyPI测试站点
- clean: 清理
README.rst
项目介绍说明
demo
样例目录 包含各种项目库api使用示例
docs
项目库Sphinx文档目录
lazyxml
源码目录
setup.py
包元信息文件
#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import with_statement import sys if sys.version_info < (2, 5): sys.exit('Python 2.5 or greater is required.') try: from setuptools import setup except ImportError: from distutils.core import setup import lazyxml with open('README.rst') as fp: readme = fp.read() with open('LICENSE') as fp: license = fp.read() setup(name='lazyxml', version=lazyxml.__version__, description='Simple xml parse and build lib.', long_description=readme, author='Zonglong Fan', author_email='lazyboy.fan@gmail.com', maintainer='Zonglong Fan', maintainer_email='lazyboy.fan@gmail.com', url='https://github.com/heronotears/lazyxml', packages=['lazyxml'], license=license, platforms=['any'], classifiers=[] )
五、打包上传到PyPI测试站点
打包、注册、上传一条命令完成:
python setup.py sdist --formats=gztar register -r pypitest upload -r pypitest
或者执行Makefile命令:
make test
六、打包上传到PyPI正式站点
在测试站点发现没有问题后,就可以打包上传到正式站点。
命令:
python setup.py sdist --formats=gztar register upload
或者
make upload
七、尾言
执行上述所有步骤后,没有出现问题的话,一个项目包就会上传到PyPI站点上面。
之后就可以到PyPI站点去查看上传好的包。