Python 的 pip install 大家都很熟悉吧~
但是我們今天要來講講,如何自己使用 OOP 面向?qū)ο缶幊虂韺懸粋€(gè) Package,然后上傳到 Pypy譬猫,讓別人可以 pip install豪硅。
如何寫一個(gè)符合安裝的 Package
Python 模塊只是一個(gè)包含代碼的 Python 文件,可以在別的代碼塊中被引用丽旅。?
但是 Package 是可以安裝的模塊的集合椰棘,Python包需要一個(gè)__init__.py文件。
1. 文件結(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)。
每個(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 就是對于 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 的測試路徑
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
# 測試安裝效果
pip install --index-url https://test.pypi.org/simple/ distribution
# 測試沒有問題后上傳到正式路徑
twine upload dist/* pip install distribution