python 發布庫 怎麼發布自己的python庫

2021-10-22 11:17:50 字數 3609 閱讀 3597

開發者可以通過python官方的第三方倉庫pypi(python package index)來發布自己開發的python庫。方法是:1、新建乙個專案資料夾和主程式;2、選擇合適的開源證書;3、編寫setup.py檔案和使用文件;4、發布。

前言與簡介

我想任何乙個有追求的python開發者在度過基礎階段後都想過發布自己的庫,也就是我們常說的造輪子,這是成為乙個成熟python開發者的第一步,在造輪子的過程中,無論是自己的程式設計能力還是為以後給開源專案貢獻**的能力都會得到很大提公升。今天這篇部落格,就來帶大家從0開始,向pypi貢獻自己的開源庫。

進入正文之前先說一下自己造輪子的步驟:

主體程式設計與編寫編寫setup.py編寫使用文件發布到pypi

那麼,pypi是什麼呢?

主體程式編寫:

專案大體結構:

下面的主體程式**僅供示例,演示如何上傳自己的專案:新建乙個專案資料夾,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

name = 'mypackage'

description = '填寫你的專案簡短描述.

'url = '你的github賬戶/mypackage'

email = '[email protected]'    # 你的郵箱

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=,

如果你的專案資料夾下只有乙個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: 

'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裡怎麼發揮了。

發布先去  註冊乙個屬於自己的賬號,記下賬號密碼。由於我們之前編寫好了setup.py,這裡只要在專案的資料夾下執行python setup.py upload即可,中間需要你輸入賬號密碼。

至此,乙個專案已經上傳完畢了,只需pip install mypackage即可使用,下面擴充套件一下聊聊,怎麼進行後續的維護。

專案的維護公升級有更新公升級之後,首先要執行如下命令刪除dist資料夾中的舊版本打包檔案,然後生成新檔案:

sudo python setup.py sdist之後,輸入以下命令,上傳新版本即可:

python setup.py upload

發布自己的python庫

自己寫了一些函式,封裝成乙個庫,想通過pip匯入,怎麼做呢?pypi註冊 先在本地建乙個專案,比如我的django xadmin,專案結構 xadmin setup.py xadmin就是我需要上傳到pypi的專案,即庫名,裡面包括有 init py 其他檔案等,比如我的 把這個專案發布到自己的gi...

自己的python包發布經驗

主要參考 以下經驗是建立在上述參考檔案之上的。有幾點經驗 1,在 註冊乙個賬號,我的是seefeel.server response 410 project pre registration is no longer required or supported,so continue directl...

Python 如何發布自己的模組

from distutils.core import setup setup name hm message 包名 version 1.0 版本號 descripion 傳送和接收模組 描述資訊 long description 完整的傳送和接收模組 完整的描述資訊 author kaisarh 作...