本文主題以下:python
編寫一個包(Python 源代碼),但不是本文的重點。python2.7
編譯包,觀察編譯後的文件。工具
發佈包,發佈的包能夠有多種類型。學習
如何在 Pypi 中查看已發佈的包測試
注意:ui
本文編寫的包在 Python2 環境下測試經過,實際上這個包(只是個例子)比較簡單,在 Python3 下也能運行。url
本文知識點可能陳舊,好比 Python Pypi 官方已作了很大改變。spa
這篇文章主要描述如何發佈一個包,不描述如何編寫一個包,若是你沒有代碼(只想學習如何發佈包),可下載下面的示例。命令行
$ wget "https://files.pythonhosted.org/packages/96/66/43e6df87373557553be2b4343db27d008c6dcefa110ccff38cba1459ca07/ywdblogmath-0.1.tar.gz"
爲了生成和發佈包,必須編寫 setup.py 文件,編寫該文件必須依賴於 setuptools 包,這個包自己也是一個 Python 包。.3d
#!/usr/bin/env python from setuptools import setup setup(name='ywdblogmath', version='0.1', description='A silly ywdblogmath package', author='ywdblog', author_email='ywdblog@gmail.com', url='http://www.yudadan.com/', packages=['ywdblogmath', 'ywdblogmath.adv'], )
望文生義,不過多講解相應的參數。
首先將該代碼生成一個本地包,而後編寫代碼測試該包的功能。
在開發模式下安裝包:
$ python setup.py develop
觀察安裝後生成的文件:
/usr/local/lib/python2.7/dist-packages/ywdblogmath.egg-link /usr/local/lib/python2.7/dist-packages/easy-install.pth 這二個文件包含的內容就是 /root/python(一個軟鏈接)。
編寫測試文件 example.py :
import sys import ywdblogmath print(ywdblogmath.add(4,5)) print(ywdblogmath.division(4, 2)) print(ywdblogmath.multiply(10, 5)) print(ywdblogmath.squareroot(48))
而後運行 example.py:
$ python example.py 9 2 50 6.92820323028.
(1)爲了發佈包,必須在 pypi.org 註冊一個用戶,註冊郵箱須要驗證。
(2)配置 $HOME」.pypirc」 文件:
[distutils] index-servers=pypi [pypi] repository = https://upload.pypi.org/legacy/ username = pypi.org 登陸名 password = pypi.org 登錄密碼
在發佈包以前,運行下列命令瞭解全部可用的命令:
$ python setup.py --help-commands
先編譯包:
$ python setup.py build
運行完成後生成 /root/python/build 目錄,因此編譯的文件保存在該目錄下。
(1)生成 tar.gz 包
$ python setup.py sdist
運行後產生下列文件:
/root/python/dist/ywdblogmath-0.1.tar.gz
/root/python/ywdblogmath.egg-info (python setup.py egg_info 命令也會生成該文件)
(2)生成 egg 包
$ python setup.py bdist_egg
運行後產生下列文件:
/root/python/dist/ywdblogmath-0.1-py2.7.egg
/root/python/ywdblogmath.egg-info (python setup.py egg_info 命令也會生成該文件)
(3)生成 wheel 包
$ python setup.py bdist_wheel
運行後產生下列文件:
/root/python/dist/ywdblogmath-0.1-py2-none-any.whl
/root/python/ywdblogmath.dist-info
最後發佈包(任何一個命令均可以):
# 發佈 .tar.gz 包 $ python setup.py sdist upload # 發佈 egg 包 $ python setup.py bdist_egg upload # 發佈 wheel 包 $ python setup.py bdist_wheel upload
至於發佈什麼類型的包,讀者本身決定,若是想讓全部的包安裝工具(好比 pip、easy_install )都能安裝你發佈的包,可同時發佈這三種類型的包。
登陸 pypi.org 查看發佈的包
在發佈包的時候,可能會遇到不少命令行提示的錯誤,這些內容不是本文的重點,另外注意 setpy.py 中的包版本號,能夠測試發佈多版本的包。