親自動(dòng)手寫一個(gè)python庫(kù)(二)

引言

經(jīng)過(guò)上一節(jié)中所述,我們搭建好了一個(gè)Python環(huán)境用于庫(kù)開發(fā),我們?cè)谶@一節(jié)真正開始搭建一個(gè)庫(kù),并將其發(fā)布。

項(xiàng)目文檔結(jié)構(gòu)

首先我們先構(gòu)建出自己項(xiàng)目的文檔結(jié)構(gòu),首先是LICENSEREADME.md,這兩個(gè)文件并不是必要的,但是最好將其加上,方便別人了解你的項(xiàng)目。README.md是關(guān)于本項(xiàng)目的介紹,LICENSE是表示該項(xiàng)目所遵循的開源協(xié)議,一般MIT用的比較多,其他協(xié)議你可以百度谷歌了解一下。

接下來(lái)是打包庫(kù)需要的一些文件,主要有MANIFEST.insetup.py兩個(gè)文件。MANIFEST.in表示打包時(shí)不會(huì)被自動(dòng)包含進(jìn)去的附加文件清單。setup.py是打包程序配置文件,需要設(shè)置一些選項(xiàng)。此外,setup.cfg是包含setup.py額外配置信息的文件,我沒有用到這其中的設(shè)置,所以本項(xiàng)目中其是空的。

caafinder文件夾就是我們要寫的Python程序,我們要注意這個(gè)文件夾里必須有__init__.py這個(gè)文件。

├── LICENSE 
├── README.md 
├── MANIFEST.in 
├── caafinder 
│ ├── __init__.py 
│ ├── workspace.py 
│ ├── database.py 
├── setup.cfg 
├── setup.py

下面是一下setup.py的一些簡(jiǎn)單配置選項(xiàng),詳細(xì)請(qǐng)參考官方文檔

from setuptools import setup, find_packages

setup(
    name = 'caafinder',
    version = '0.1.4',
    keywords='ds caa',
    description = 'a library for DS CAA Developer',
    license = 'MIT License',
    url = 'https://github.com/Gutier14/CAAFinder',
    author = 'Luca Liu',
    author_email = 'geekluca@qq.com',
    packages = find_packages(),
    include_package_data = True,
    platforms = 'any',
    install_requires = [],
)

可以參考一下:

關(guān)于模塊

模塊也就是庫(kù),我們自己寫程序時(shí),通常通過(guò)import XX來(lái)導(dǎo)入一個(gè)需要的模塊,在Python中,一個(gè)py文件就是一個(gè)模塊,如一個(gè)abc.py的文件就是一個(gè)名字叫abc的模塊。你也許還想到,如果不同的人編寫的模塊名相同怎么辦?為了避免模塊名沖突,Python又引入了按目錄來(lái)組織模塊的方法,稱為包(Package),包是一個(gè)帶有__init__.py的文件夾,如圖中文檔所示,我們有一個(gè)包caafinder,因?yàn)樗淖蛹?jí)有一個(gè)__init__.py,包caafinder擁有databaseworkspace兩個(gè)模塊。__init__.py可以是空文件,也可以有Python代碼,因?yàn)?code>__init__.py本身就是一個(gè)模塊,而它的模塊名就是caafinder。

├── caafinder 
│ ├── __init__.py 
│ ├── workspace.py 
│ ├── database.py 

程序打包

通過(guò)執(zhí)行下列語(yǔ)句來(lái)進(jìn)行打包:

python setup.py xxx

其中xxx可以是下列幾種方式中其中一個(gè):

sdist             create a source distribution (tarball, zip file, etc.) 
bdist             create a built (binary) distribution 
bdist_dumb        create a "dumb" built distribution 
bdist_rpm         create an RPM distribution 
bdist_wininst     create an executable installer for MS Windows 
bdist_egg         create an "egg" distribution

舉個(gè)例子:

python setup.py sdist #生成的文件支持 pip

此時(shí)在根目錄出現(xiàn)了dist文件夾,里面有name-version.tar.gz這個(gè)文件,這就是我們要發(fā)布到PyPI的壓縮包了。

發(fā)布到PyPI

首先我們需要在PyPI上注冊(cè)一個(gè)帳號(hào),并在本地用戶根目錄下創(chuàng)建文件~/.pypirc,這樣以后就不需要輸入帳號(hào)密碼了。

[distutils]
index-servers=pypi

[pypi]
repository = https://pypi.python.org/pypi
username = <username>
password = <password>

接下來(lái),需要在PyPI網(wǎng)站上注冊(cè)一個(gè)項(xiàng)目,網(wǎng)站提供三種方式注冊(cè),選擇一種即可,最簡(jiǎn)單的是通過(guò)上傳打包時(shí)生成的PKG-INFO文件,生成項(xiàng)目信息。此步驟只需在第一次發(fā)布時(shí)操作。

接下來(lái)就是最后一步,上傳打包好的庫(kù)。我們這里是用twine,如果環(huán)境中沒有安裝,需要先采用pip install twine安裝即可。

twine upload dist/*

此時(shí)在網(wǎng)頁(yè)上就可以看到自己的源代碼包啦,并且可以通過(guò)使用pip install packagename,就可以使用我們自己寫的Python庫(kù)了。

祝大家玩的開心,希望大家能到Github上幫忙點(diǎn)個(gè)贊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,832評(píng)論 6 427
  • 環(huán)境管理管理Python版本和環(huán)境的工具。p–非常簡(jiǎn)單的交互式python版本管理工具。pyenv–簡(jiǎn)單的Pyth...
    MrHamster閱讀 3,952評(píng)論 1 61
  • Python常用庫(kù)大全,看看有沒有你需要的。 環(huán)境管理 管理 Python 版本和環(huán)境的工具 p – 非常簡(jiǎn)單的交...
    XDgbh閱讀 15,987評(píng)論 4 147
  • Python 資源大全中文版 awesome-python[https://github.com/vinta/aw...
    萬(wàn)色星辰閱讀 9,930評(píng)論 0 255
  • GitHub 上有一個(gè) Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣。awesome-p...
    若與閱讀 19,319評(píng)論 4 417

友情鏈接更多精彩內(nèi)容