創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)蟠龍免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。不懂發(fā)布自己的python庫的方法?其實(shí)想解決這個問題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。
開發(fā)者可以通過python官方的第三方倉庫PyPI(Python Package Index)來發(fā)布自己開發(fā)的Python庫。方法是:1、新建一個項(xiàng)目文件夾和主程序;2、選擇合適的開源證書;3、編寫setup.py文件和使用文檔;4、發(fā)布。
前言與簡介
我想任何一個有追求的Python開發(fā)者在度過基礎(chǔ)階段后都想過發(fā)布自己的庫,也就是我們常說的造輪子,這是成為一個成熟Python開發(fā)者的第一步,在造輪子的過程中,無論是自己的編程能力還是為以后給開源項(xiàng)目貢獻(xiàn)代碼的能力都會得到很大提升。今天這篇博客,就來帶大家從0開始,向PyPI貢獻(xiàn)自己的開源庫。
進(jìn)入正文之前先說一下自己造輪子的步驟:
主體程序設(shè)計與編寫編寫setup.py編寫使用文檔發(fā)布到PyPI
那么,PyPI是什么呢?
PyPI (Python Package Index) 是python官方的第三方庫的倉庫,所有人都可以下載第三方庫或上傳自己開發(fā)的庫到PyPI。PyPI推薦使用pip包管理器來下載第三方庫。截至目前,PyPI已經(jīng)有179,387個項(xiàng)目,很多知名項(xiàng)目如Django都發(fā)布在上面:
正文
主體程序編寫:
一般來說,自己造輪子無非是處于兩種目的,一是現(xiàn)有的輪子不能滿足自己的需求,二是為了鍛煉自己的能力,在這里,我們就不去編寫一個有實(shí)際用途的輪子了,請根據(jù)你自己的需求自行編寫,如果你無從下手,這里可以給一個我之前造的小輪子,跨平臺統(tǒng)計代碼行數(shù)的工具作為參考,項(xiàng)目地址:https://github.com/hj24/count-line
項(xiàng)目大體結(jié)構(gòu):
下面的主體程序代碼僅供示例,演示如何上傳自己的項(xiàng)目:
新建一個項(xiàng)目文件夾,mypackage,初始化成git倉庫。
新建主程序,test.py:
__version__ = '0.1.0'"""實(shí)現(xiàn)你自己的輪子的功能"""def main(): passif __name__ == '__main__': main()
編寫完成之后,將其上傳至Github,或其他代碼托管平臺。
選擇合適的開源證書
任何一個開源項(xiàng)目都應(yīng)當(dāng)選擇一個開源許可證,沒有 License 的內(nèi)容是默認(rèn)會被版權(quán)保護(hù)。所以如果你想要的是讓大家都放心使用,就需要選擇一個合適的 License ,只有這樣才能賦予任何人使用,分享和修改這個軟件的權(quán)力。
具體如何選擇,請看知乎的這篇回答:傳送門
總結(jié)一下就是:
MIT 最自由,沒有任何限制,任何人都可以售賣你的開源軟件,甚至可以用你的名字促銷。BSD 和 Apache 協(xié)議也很自由,跟 MIT 的區(qū)別分別是不允許用作者本人名義促銷和保護(hù)作者版權(quán)。GPL 最霸道,對代碼的修改部分也必須是 GPL 的,同時基于 GPL 代碼而開發(fā)的代碼也必須按照 GPL 發(fā)布,MPL 相對溫和一些,如果后續(xù)開發(fā)的代碼中添加了新文件,同時新文件中也沒有用到原來的代碼,那么新文件可以不必繼續(xù)沿用 MPL 。
一般來說,如果選擇MIT 協(xié)議就可以了。
編寫setup.py
setup.py是每個能從PyPi上能下載到的庫都有的文件,它是發(fā)布的關(guān)鍵所在。
網(wǎng)上的大部分教程都很復(fù)雜,新手很難看懂怎么編寫,好在kennethreitz大神幫我們解決了這個難題,他編寫了一個for human的setup.py模板,項(xiàng)目地址:傳送門,我們只需要把它復(fù)制過來,修改自己項(xiàng)目需要的地方即可,不需要額外的編寫setup.cfg等其他文件。
代碼請點(diǎn)擊傳送門查看(131行,就不復(fù)制了...),我們需要重點(diǎn)關(guān)注的是如下幾個部分:
項(xiàng)目的配置信息:
# Package meta-data. NAME = 'mypackage' DESCRIPTION = '填寫你的項(xiàng)目簡短描述. 'URL = 'https://github.com/你的github賬戶/mypackage' EMAIL = 'me@example.com' # 你的郵箱 AUTHOR = 'Awesome Soul' # 你的名字 REQUIRES_PYTHON = '>=3.6.0' # 項(xiàng)目支持的python版本 VERSION = '0.1.0' # 項(xiàng)目版本號
項(xiàng)目的依賴庫(沒有就不填):
# What packages are required for this module to be executed? REQUIRED = [ # 'requests', 'maya', 'records', ]
setup部分:
這里大部分內(nèi)容都不用你填,只有以下幾個注意點(diǎn)
需要注意的是long_description這里默認(rèn)是你項(xiàng)目的README.md文件
注釋掉的entry_points部分是用來生成命令行工具或者GUI工具的(理論上是跨平臺的),比如這里我生成了一個test的命令來代替test.py的main函數(shù),安裝成功以后就可以直接使用“test”命令:
python entry_points={ 'console_scripts': ['test=test:main'], },
如果你的項(xiàng)目文件夾下只有一個py文件來實(shí)現(xiàn)你的功能的話,需要將packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]),注釋掉,然后取消py_modules的注釋并進(jìn)行相應(yīng)修改。
setup( name=NAME, version=about['__version__'], description=DESCRIPTION, long_description=long_description, long_description_content_type='text/markdown', author=AUTHOR, author_email=EMAIL, python_requires=REQUIRES_PYTHON, url=URL, packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]), # If your package is a single module, use this instead of 'packages': # py_modules=['mypackage'], # entry_points={ # 'console_scripts': ['mycli=mymodule:cli'], # }, install_requires=REQUIRED, extras_require=EXTRAS, include_package_data=True, license='MIT', classifiers=[ # Trove classifiers # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers 'License :: OSI Approved :: MIT License', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy' ], # $ setup.py publish support. cmdclass={ 'upload': UploadCommand, },)
至此setup.py就完成了。
編寫使用文檔
一個好的項(xiàng)目,是需要有一個條理清晰的文檔的,至于如何編寫,就看你在README.md里怎么發(fā)揮了。
發(fā)布
先去 https://pypi.org 注冊一個屬于自己的賬號,記下賬號密碼。由于我們之前編寫好了setup.py,這里只要在項(xiàng)目的文件夾下運(yùn)行python setup.py upload即可,中間需要你輸入賬號密碼。
至此,一個項(xiàng)目已經(jīng)上傳完畢了,只需pip install mypackage即可使用,下面擴(kuò)展一下聊聊,怎么進(jìn)行后續(xù)的維護(hù)。
項(xiàng)目的維護(hù)升級
有更新升級之后,首先要運(yùn)行如下命令刪除dist文件夾中的舊版本打包文件,然后生成新文件:
sudo python setup.py sdist
之后,輸入以下命令,上傳新版本即可:
python setup.py upload
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享發(fā)布自己的python庫的方法內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!
網(wǎng)站欄目:發(fā)布自己的python庫的方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://jinyejixie.com/article28/dijhcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、關(guān)鍵詞優(yōu)化、企業(yè)建站、網(wǎng)站營銷、網(wǎng)站排名、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容