摘要:本文主題如下編寫一個(gè)包源代碼,但不是本文的重點(diǎn)。發(fā)布包,發(fā)布的包可以有多種類型。查看為了生成和發(fā)布包,必須編寫文件,編寫該文件必須依賴于包,這個(gè)包本身也是一個(gè)包。編寫測試文件然后運(yùn)行配置為了發(fā)布包,必須在注冊一個(gè)用戶,注冊郵箱需要驗(yàn)證。
本文主題如下:
編寫一個(gè)包(Python 源代碼),但不是本文的重點(diǎn)。
編譯包,觀察編譯后的文件。
發(fā)布包,發(fā)布的包可以有多種類型。
如何在 Pypi 中查看已發(fā)布的包
注意:
本文編寫的包在 Python2 環(huán)境下測試通過,實(shí)際上這個(gè)包(只是個(gè)例子)比較簡單,在 Python3 下也能運(yùn)行。
本文知識點(diǎn)可能陳舊,比如 Python Pypi 官方已做了很大改變。
1. 編寫包源代碼這篇文章主要描述如何發(fā)布一個(gè)包,不描述如何編寫一個(gè)包,如果你沒有代碼(只想學(xué)習(xí)如何發(fā)布包),可下載下面的示例。
$ wget "https://files.pythonhosted.org/packages/96/66/43e6df87373557553be2b4343db27d008c6dcefa110ccff38cba1459ca07/ywdblogmath-0.1.tar.gz"2. 查看 setup.py
為了生成和發(fā)布包,必須編寫 setup.py 文件,編寫該文件必須依賴于 setuptools 包,這個(gè)包本身也是一個(gè) Python 包。.
#!/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"], )
望文生義,不過多講解相應(yīng)的參數(shù)。
3. 測試本地包首先將該代碼生成一個(gè)本地包,然后編寫代碼測試該包的功能。
在開發(fā)模式下安裝包:
$ python setup.py develop
觀察安裝后生成的文件:
/usr/local/lib/python2.7/dist-packages/ywdblogmath.egg-link /usr/local/lib/python2.7/dist-packages/easy-install.pth 這二個(gè)文件包含的內(nèi)容就是 /root/python(一個(gè)軟連接)。
編寫測試文件 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))
然后運(yùn)行 example.py:
$ python example.py 9 2 50 6.92820323028.4. 配置 pypi
(1)為了發(fā)布包,必須在 pypi.org 注冊一個(gè)用戶,注冊郵箱需要驗(yàn)證。
(2)配置 $HOME”.pypirc” 文件:
[distutils] index-servers=pypi [pypi] repository = https://upload.pypi.org/legacy/ username = pypi.org 登錄名 password = pypi.org 登陸密碼5. 發(fā)布包
在發(fā)布包之前,運(yùn)行下列命令了解所有可用的命令:
$ python setup.py --help-commands
先編譯包:
$ python setup.py build
運(yùn)行完成后生成 /root/python/build 目錄,所以編譯的文件保存在該目錄下。
(1)生成 tar.gz 包
$ python setup.py sdist
運(yùn)行后產(chǎn)生下列文件:
/root/python/dist/ywdblogmath-0.1.tar.gz
/root/python/ywdblogmath.egg-info (python setup.py egg_info 命令也會(huì)生成該文件)
(2)生成 egg 包
$ python setup.py bdist_egg
運(yùn)行后產(chǎn)生下列文件:
/root/python/dist/ywdblogmath-0.1-py2.7.egg
/root/python/ywdblogmath.egg-info (python setup.py egg_info 命令也會(huì)生成該文件)
(3)生成 wheel 包
$ python setup.py bdist_wheel
運(yùn)行后產(chǎn)生下列文件:
/root/python/dist/ywdblogmath-0.1-py2-none-any.whl
/root/python/ywdblogmath.dist-info
最后發(fā)布包(任何一個(gè)命令都可以):
# 發(fā)布 .tar.gz 包 $ python setup.py sdist upload # 發(fā)布 egg 包 $ python setup.py bdist_egg upload # 發(fā)布 wheel 包 $ python setup.py bdist_wheel upload
至于發(fā)布什么類型的包,讀者自己決定,如果想讓所有的包安裝工具(比如 pip、easy_install )都能安裝你發(fā)布的包,可同時(shí)發(fā)布這三種類型的包。
登錄 pypi.org 查看發(fā)布的包
在發(fā)布包的時(shí)候,可能會(huì)遇到很多命令行提示的錯(cuò)誤,這些內(nèi)容不是本文的重點(diǎn),另外注意 setpy.py 中的包版本號,可以測試發(fā)布多版本的包。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/42188.html