楔子
我們在安裝第三方包的時(shí)候,直接一個(gè)pip install xxx命令就搞定了,然后pip會去pypi上尋找我們要安裝的包,然后下載下來。
而pypi(Python Package Index )你可以看成是官方維護(hù)的一個(gè)大倉庫,專門用來存儲世界各地的程序員編寫的第三方模塊。我們使用pip進(jìn)行安裝的時(shí)候就會去這個(gè)倉庫里面找,找到了進(jìn)行下載,找不到就提示不存在。
當(dāng)然我們在安裝的時(shí)候還可以指定清華源、豆瓣源,因?yàn)閜ypi在國外,下載有時(shí)候比較慢,而一旦指定了國內(nèi)的源,那么就不會去pypi上下載了,所以你可以看成國內(nèi)也有倉庫,專門負(fù)責(zé)搬運(yùn)pypi里面的內(nèi)容。
上傳模塊至pypi
總共分為三步:編寫模塊、編譯模塊、上傳模塊。
編寫模塊
我們看一下要上傳到pypi的模塊長什么樣子。
- hanser-module-upload:項(xiàng)目的根目錄
- hanser:模塊名,我們后面可以使用from hanser import xxx,或者import hanser
- hanser下面的兩個(gè)py文件:相應(yīng)的代碼
- LICENSE:開源的 LICENSE,如:Apache License 2.0,MIT License 等等
- README.md:關(guān)于項(xiàng)目的描述,描述如何安裝、使用等情況
- setup.py:setuptools 的構(gòu)建腳本
然后我們看看代碼長什么樣子。
# calc.py
def add(x: int, y: int) -> int:
return x + y
def sub(x: int, y: int) -> int:
return x - y
# __init__.py
from .calc import add, sub
然后最重要的就是編寫setup.py。
# setup.py 是一個(gè) setuptools 的構(gòu)建腳本,其中包含了項(xiàng)目和代碼文件的信息
# 如果沒有需要先安裝,pip install setuptools
import setuptools
setuptools.setup(
# 項(xiàng)目的名稱
name="anser-module-upload",
#項(xiàng)目的版本
version="0.0.1",
# 項(xiàng)目的作者
author="布諾妮亞",
# 作者的郵箱
author_email="hanser@baka.com",
# 項(xiàng)目描述
description="簡單的加減運(yùn)算上傳測試",
# 項(xiàng)目的長描述
long_description="簡單的加減運(yùn)算上傳測試",
# 以哪種文本格式顯示長描述
long_description_content_type="text/markdown", # 所需要的依賴
install_requires=[], # 比如["flask>=0.10"]
# 項(xiàng)目主頁
url="https://www.baidu.com",
# 項(xiàng)目中包含的子包,find_packages() 是自動發(fā)現(xiàn)根目錄中的所有的子包。
packages=setuptools.find_packages(),
# 其他信息,這里寫了使用 Python3,MIT License許可證,不依賴操作系統(tǒng)。
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
)
編譯
在上傳代碼之前,我們需要將代碼編譯。除了setuptools之外,我們還需要一個(gè)模塊wheel,如果沒有則需要安裝。
pip install --user --upgrade setuptools wheel
然后對我們的setup.py進(jìn)行編譯。
python setup.py sdist bdist_wheel
編譯成功之后會在項(xiàng)目中生成多個(gè)目錄,其中有一個(gè)dist目錄是我們需要上傳的。
上傳
然后就是上傳了,我們需要前往(https://pypi.org/account/register/)注冊一個(gè)賬號,然后再安裝一個(gè)模塊:twine,因?yàn)樯蟼餍枰褂玫剿?/p>
pip install --user --upgrade twine
安裝完成之后,就可以使用如下命令上傳 dist 文件夾里面的文件。
python -m twine upload --repository pypi dist/*
我們看到上傳成功,下面去頁面看一下。
注意:這里為了區(qū)分,我們把根目錄名和模塊名取得不一樣,我們需要pip install hanser-module-upload,然后在site-packages下面會有一個(gè)hanser目錄,也就是我們所使用的模塊。但是一般情況下,這兩者都是一樣的。比如:我們安裝pandas,那么得到的模塊也叫做pandas。
下面就來試一試吧:
成功安裝,當(dāng)然也是可以使用的。
以后如果我們自己寫了一個(gè)比較不錯的模塊的時(shí)候,就可以發(fā)布到pypi上面。
以上就是如何將自己寫的模塊上傳到pypi的詳細(xì)內(nèi)容,更多關(guān)于模塊上傳到pypi的資料請關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- Python打包模塊wheel的使用方法與將python包發(fā)布到PyPI的方法詳解
- python 如何上傳包到pypi
- 如何使用Docker搭建pypi私有倉庫
- 搭建pypi私有倉庫實(shí)現(xiàn)過程詳解
- 完美解決pyinstaller打包報(bào)錯找不到依賴pypiwin32或pywin32-ctypes的錯誤
- 將python包發(fā)布到PyPI和制作whl文件方式
- python自制包并用pip免提交到pypi僅安裝到本機(jī)【推薦】
- 使用docker+devpi搭建本地pypi源的方法
- 使用豆瓣提供的國內(nèi)pypi源
- Python上傳package到Pypi(代碼簡單)
- Python中pip安裝非PyPI官網(wǎng)第三方庫的方法