您好,登錄后才能下訂單哦!
不懂發布自己的python庫的方法?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。
開發者可以通過python官方的第三方倉庫PyPI(Python Package Index)來發布自己開發的Python庫。方法是:1、新建一個項目文件夾和主程序;2、選擇合適的開源證書;3、編寫setup.py文件和使用文檔;4、發布。
前言與簡介
我想任何一個有追求的Python開發者在度過基礎階段后都想過發布自己的庫,也就是我們常說的造輪子,這是成為一個成熟Python開發者的第一步,在造輪子的過程中,無論是自己的編程能力還是為以后給開源項目貢獻代碼的能力都會得到很大提升。今天這篇博客,就來帶大家從0開始,向PyPI貢獻自己的開源庫。
進入正文之前先說一下自己造輪子的步驟:
主體程序設計與編寫編寫setup.py編寫使用文檔發布到PyPI
那么,PyPI是什么呢?
PyPI (Python Package Index) 是python官方的第三方庫的倉庫,所有人都可以下載第三方庫或上傳自己開發的庫到PyPI。PyPI推薦使用pip包管理器來下載第三方庫。截至目前,PyPI已經有179,387個項目,很多知名項目如Django都發布在上面:
正文
主體程序編寫:
一般來說,自己造輪子無非是處于兩種目的,一是現有的輪子不能滿足自己的需求,二是為了鍛煉自己的能力,在這里,我們就不去編寫一個有實際用途的輪子了,請根據你自己的需求自行編寫,如果你無從下手,這里可以給一個我之前造的小輪子,跨平臺統計代碼行數的工具作為參考,項目地址:https://github.com/hj24/count-line
項目大體結構:
下面的主體程序代碼僅供示例,演示如何上傳自己的項目:
新建一個項目文件夾,mypackage,初始化成git倉庫。
新建主程序,test.py:
__version__ = '0.1.0'"""實現你自己的輪子的功能"""def main(): passif __name__ == '__main__': main()
編寫完成之后,將其上傳至Github,或其他代碼托管平臺。
選擇合適的開源證書
任何一個開源項目都應當選擇一個開源許可證,沒有 License 的內容是默認會被版權保護。所以如果你想要的是讓大家都放心使用,就需要選擇一個合適的 License ,只有這樣才能賦予任何人使用,分享和修改這個軟件的權力。
具體如何選擇,請看知乎的這篇回答:傳送門
總結一下就是:
MIT 最自由,沒有任何限制,任何人都可以售賣你的開源軟件,甚至可以用你的名字促銷。BSD 和 Apache 協議也很自由,跟 MIT 的區別分別是不允許用作者本人名義促銷和保護作者版權。GPL 最霸道,對代碼的修改部分也必須是 GPL 的,同時基于 GPL 代碼而開發的代碼也必須按照 GPL 發布,MPL 相對溫和一些,如果后續開發的代碼中添加了新文件,同時新文件中也沒有用到原來的代碼,那么新文件可以不必繼續沿用 MPL 。
一般來說,如果選擇MIT 協議就可以了。
編寫setup.py
setup.py是每個能從PyPi上能下載到的庫都有的文件,它是發布的關鍵所在。
網上的大部分教程都很復雜,新手很難看懂怎么編寫,好在kennethreitz大神幫我們解決了這個難題,他編寫了一個for human的setup.py模板,項目地址:傳送門,我們只需要把它復制過來,修改自己項目需要的地方即可,不需要額外的編寫setup.cfg等其他文件。
代碼請點擊傳送門查看(131行,就不復制了...),我們需要重點關注的是如下幾個部分:
項目的配置信息:
# Package meta-data. NAME = 'mypackage' DESCRIPTION = '填寫你的項目簡短描述. 'URL = 'https://github.com/你的github賬戶/mypackage' EMAIL = 'me@example.com' # 你的郵箱 AUTHOR = 'Awesome Soul' # 你的名字 REQUIRES_PYTHON = '>=3.6.0' # 項目支持的python版本 VERSION = '0.1.0' # 項目版本號
項目的依賴庫(沒有就不填):
# What packages are required for this module to be executed? REQUIRED = [ # 'requests', 'maya', 'records', ]
setup部分:
這里大部分內容都不用你填,只有以下幾個注意點
需要注意的是long_description這里默認是你項目的README.md文件
注釋掉的entry_points部分是用來生成命令行工具或者GUI工具的(理論上是跨平臺的),比如這里我生成了一個test的命令來代替test.py的main函數,安裝成功以后就可以直接使用“test”命令:
python entry_points={ 'console_scripts': ['test=test:main'], },
如果你的項目文件夾下只有一個py文件來實現你的功能的話,需要將packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]),注釋掉,然后取消py_modules的注釋并進行相應修改。
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就完成了。
編寫使用文檔
一個好的項目,是需要有一個條理清晰的文檔的,至于如何編寫,就看你在README.md里怎么發揮了。
發布
先去 https://pypi.org 注冊一個屬于自己的賬號,記下賬號密碼。由于我們之前編寫好了setup.py,這里只要在項目的文件夾下運行python setup.py upload即可,中間需要你輸入賬號密碼。
至此,一個項目已經上傳完畢了,只需pip install mypackage即可使用,下面擴展一下聊聊,怎么進行后續的維護。
項目的維護升級
有更新升級之后,首先要運行如下命令刪除dist文件夾中的舊版本打包文件,然后生成新文件:
sudo python setup.py sdist
之后,輸入以下命令,上傳新版本即可:
python setup.py upload
感謝你能夠認真閱讀完這篇文章,希望小編分享發布自己的python庫的方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。