本文主題如下:
編寫一個包(Python 源代碼),但不是本文的重點。
編譯包,觀察編譯後的檔案。
釋出包,釋出的包可以有多種類型。
如何在 Pypi 中檢視已釋出的包
注意:
本文編寫的包在 Python2 環境下測試通過,實際上這個包(隻是個例子)比較簡單,在 Python3 下也能運作。
本文知識點可能陳舊,比如 Python Pypi 官方已做了很大改變。
1. 編寫包源代碼
這篇文章主要描述如何釋出一個包,不描述如何編寫一個包,如果你沒有代碼(隻想學習如何釋出包),可下載下傳下面的示例。
2. 檢視 setup.py
為了生成和釋出包,必須編寫 setup.py 檔案,編寫該檔案必須依賴于 setuptools 包,這個包本身也是一個 Python 包。.
#!/usr/bin/env python
from setuptools import setup
setup(name='ywdblogmath',
version='0.1',
description='A silly ywdblogmath package',
author='ywdblog',
author_email='[email protected]',
url='http://www.yudadan.com/',
packages=['ywdblogmath', 'ywdblogmath.adv'],
)
望文生義,不過多講解相應的參數。
3. 測試本地包
首先将該代碼生成一個本地包,然後編寫代碼測試該包的功能。
在開發模式下安裝包:
$ python setup.py develop
觀察安裝後生成的檔案:
/usr/local/lib/python2/dist-packages/ywdblogmath.egg-link
/usr/local/lib/python2/dist-packages/easy-install.pth
這二個檔案包含的内容就是 /root/python(一個軟連接配接)。
編寫測試檔案 example.py :
import sys
import ywdblogmath
print(ywdblogmath.add(,))
print(ywdblogmath.division(, ))
print(ywdblogmath.multiply(, ))
print(ywdblogmath.squareroot())
然後運作 example.py:
$ python example.py
.
4. 配置 pypi
(1)為了釋出包,必須在 pypi.org 注冊一個使用者,注冊郵箱需要驗證。
(2)配置 $HOME”.pypirc” 檔案:
[distutils]
index-servers=pypi
[pypi]
repository = https://upload.pypi.org/legacy/
username = pypi.org 登入名
password = pypi.org 登陸密碼
5. 釋出包
在釋出包之前,運作下列指令了解所有可用的指令:
$ 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 中的包版本号,可以測試釋出多版本的包。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CXxUlaNlXSE1UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO5UDM0EDMwADMxgDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)