上傳python包到PyPI

1、前言

因爲項目須要將API響應的XML內容解析成python對象,寫了一個簡單的xml轉python的庫,由於功能簡單,細節處理也很差,文檔也沒有,沒想也很差意思上傳到pypi。html

後來因爲多個不一樣的獨立的服務都須要這個轉換功能,若是每一個服務都把這個庫放置於各自的目錄下,維護起來很麻煩,纔想到完善這個庫,上傳到PyPI,經過pip來統一管理。python

2、建立帳號

PyPI正式站點PyPI測試站點分別註冊一個賬號,用於後面上傳。爲了便於記憶,我使用了相同的賬號和密碼。git

3、建立.pypirc配置文件

此文件主要用於上傳包到PyPI時驗證權限。在用戶根目錄下建立文件~/.pypirc,內容以下:github

[distutils]
index-servers =
    pypi
    pypitest

[pypi]
username:xxx
password:xxx

[pypitest]
repository: https://testpypi.python.org/pypi
username:xxx
password:xxx

  

4、建立項目庫

每一個項目庫下必須有一個setup.py文件,除此以外一樣能夠建立其餘附加的如readme、license等用以項目描述和版權信息的文件。api

可參考官方的說明文檔:Creating a Source Distribution測試

下面以lazyxml庫做爲示例。ui

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

項目版權許可證說明url

MANIFEST.in

打包時包含/排除指定規則的文件spa

Makefile

Makefile腳本簡化操做orm

  • 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=[]
      )

 

5、打包上傳到PyPI測試站點

打包、註冊、上傳一條命令完成:

python setup.py sdist --formats=gztar register -r pypitest upload -r pypitest

或者執行Makefile命令:

make test

6、打包上傳到PyPI正式站點

在測試站點發現沒有問題後,就能夠打包上傳到正式站點。
命令:

python setup.py sdist --formats=gztar register upload

或者

make upload

7、尾言

執行上述全部步驟後,沒有出現問題的話,一個項目包就會上傳到PyPI站點上面。

以後就能夠到PyPI站點去查看上傳好的包。

相關文章
相關標籤/搜索