一、前言
由於項目需要將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站點去查看上傳好的包。
