Python 面向?qū)ο缶幊讨谱?Package 并提供下載安裝

Python 的 pip install 大家都很熟悉吧~

但是我們今天要來講講,如何自己使用 OOP 面向?qū)ο缶幊虂韺懸粋€(gè) Package,然后上傳到 Pypy,讓別人可以 pip install。

如何寫一個(gè)符合安裝的 Package

Python 模塊只是一個(gè)包含代碼的 Python 文件,可以在別的代碼塊中被引用。?

但是 Package 是可以安裝的模塊的集合,Python包需要一個(gè)__init__.py文件。

1. 文件結(jié)構(gòu)

package 結(jié)構(gòu)

這里可以看到可以被用于安裝的文件夾里面有一個(gè) distributions 的文件夾,這個(gè)名字也是 package 的名字,此外也有一個(gè) setup.py 的文件

先來看一個(gè) setup.py 文件,是 Package 的屬性。

from setuptools import setup

setup(name='distributions',

version='0.1',

description='Gaussian distributions',

packages=['distributions'],

zip_safe=False)

接下來,就是 文件夾里面的 distribution 文件夾的結(jié)構(gòu)。

結(jié)構(gòu)

每個(gè) Package 都需要一個(gè) __init__.py 的文件去處理初始化問題,下面來看一下里面書寫的內(nèi)容。

from .Gaussiandistribution import Gaussian

盡管不書寫,整個(gè) Package 安裝也是沒有問題的,但是在使用的時(shí)候,會(huì)是的引用變得繁瑣。通過結(jié)構(gòu)可以看到,我們的 Class 類是在 Caussiandistribution.py 里面的,因此當(dāng)初始化使用了這句代碼,我們就可以直接引用類了,即,from distributions import Gaussian 就可以直接使用了。?

README.md 就是對(duì)于 package 功能的說明。

license.txt 是一個(gè)使用規(guī)范,我們通常會(huì)直接 copy MIT 的說明,如下。

Copyright <YEAR> <COPYRIGHT HOLDER>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

setup.cfg 是一個(gè)默認(rèn)文檔,表明需要顯示的內(nèi)容。以下就是文檔內(nèi)的內(nèi)容。

[metadata]

description-file = README.md

2. 上傳 Pypi

# 在 Terminal 中進(jìn)入相應(yīng)的文件

cd binomial_package_files

# 生成需要上傳的配套文件,egg、zip 等

python setup.py sdist

# 安裝上傳所有的工具 twine

pip install twine

# 上傳到 pypi 的測(cè)試路徑

twine upload --repository-url https://test.pypi.org/legacy/ dist/*

# 測(cè)試安裝效果

pip install --index-url https://test.pypi.org/simple/ distribution

# 測(cè)試沒有問題后上傳到正式路徑

twine upload dist/* pip install distribution

?著作權(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)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,854評(píng)論 0 10
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 11,116評(píng)論 0 23
  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007閱讀 2,334評(píng)論 0 3
  • 1、孝是一種序位法則和流通法則。 教育,主要是教你做“人”的道理。 教育有三個(gè)目的,第一是教你明了人與人之間的...
    LinnChen閱讀 292評(píng)論 0 1
  • 昨天晚上在艾語團(tuán)線上學(xué)習(xí)了現(xiàn)代婚禮需要注意的細(xì)節(jié)和流程,但是因?yàn)樽陨碓蚯懊娑加姓J(rèn)真在聽課,后面一小部分沒能...
    MY洛洛閱讀 290評(píng)論 0 0

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