最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python包發(fā)布到PyPI的實(shí)現(xiàn)步驟

 更新時間:2025年11月30日 08:36:24   作者:Redmi人兒  
本文主要介紹了Python包發(fā)布到PyPI的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文將詳細(xì)介紹如何使用 pyproject.toml 配置將 Python 包發(fā)布到 PyPI,包括完整的配置示例、構(gòu)建命令和故障排除方法。

?? 項(xiàng)目配置

基礎(chǔ) pyproject.toml 配置

[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "your-package-name"
version = "0.1.0"
authors = [
    {name = "Your Name", email = "you@example.com"}
]
description = "A short description of your package"
readme = {file = "README.md", content-type = "text/markdown"}
license = {text = "MIT"}
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]
requires-python = ">=3.7"
dependencies = [
    "click>=8.1",
]

[project.urls]
Homepage = "https://github.com/yourusername/your-package"

[project.scripts]
your-command = "your_package.module:main"

[tool.setuptools]
packages = {find = {}}

完整配置說明

關(guān)鍵字段說明:

  • name: PyPI 包名(使用連字符 -
  • version: 遵循語義化版本控制
  • readme: 支持 Markdown 或 reStructuredText
  • classifiers: 幫助用戶找到你的包
  • requires-python: 指定 Python 版本兼容性

包名約定:

  • PyPI 包名:your-package-name(使用連字符)
  • 導(dǎo)入模塊名:your_package(使用下劃線)
  • 用戶通過 import your_package 導(dǎo)入

??? 工具安裝

# 安裝構(gòu)建和上傳工具
pip install --upgrade build twine setuptools wheel

# 驗(yàn)證安裝
python -m build --version
twine --version

?? 構(gòu)建流程

1. 清理構(gòu)建環(huán)境

# 清理舊的構(gòu)建文件
rm -rf dist/ build/ *.egg-info/

2. 構(gòu)建包

# 構(gòu)建源碼包和 wheel 包
python -m build

# 構(gòu)建結(jié)果
ls dist/
# your-package-name-0.1.0.tar.gz
# your-package-name-0.1.0-py3-none-any.whl

3. 驗(yàn)證包

# 檢查元數(shù)據(jù)
twine check dist/*

# 查看包內(nèi)容
unzip -l dist/*.whl | head -10

?? 發(fā)布到 PyPI

1. 準(zhǔn)備 PyPI 賬號

2. 上傳包

# 上傳到正式 PyPI
twine upload dist/*

# 使用 API Token 認(rèn)證
# 用戶名: __token__
# 密碼: pypi-xxxxxxxxxxxxxxxxxxxx

3. 測試安裝

# 驗(yàn)證發(fā)布成功
pip install your-package-name

?? 測試環(huán)境發(fā)布

推薦先在 TestPyPI 測試:

# 注冊 TestPyPI 賬號
# 訪問 https://test.pypi.org

# 上傳到測試環(huán)境
twine upload --repository-url https://test.pypi.org/legacy/ dist/*

# 從測試環(huán)境安裝
pip install --index-url https://test.pypi.org/simple/ your-package-name

?? 常見問題解決

1. 元數(shù)據(jù)缺失錯誤

ERROR: InvalidDistribution: Metadata is missing required fields: Name, Version

解決方案:

# 升級 twine 到最新版本
pip install --upgrade twine

# 使用模塊方式運(yùn)行
python -m twine check dist/*

2. 包名沖突

HTTPError: 400 Client Error: The name 'your-package' is already in use

解決方案:

  • pyproject.toml 中修改 name 字段
  • 確保包名在 PyPI 上唯一

3. 版本沖突

HTTPError: 400 Client Error: File already exists

解決方案:

  • pyproject.toml 中更新 version 字段
  • 刪除已上傳的錯誤版本(通過 PyPI 管理界面)

?? 發(fā)布檢查清單

  • 更新 pyproject.toml 中的版本號
  • 確保 README.md 內(nèi)容完整且格式正確
  • 驗(yàn)證所有依賴項(xiàng)已正確聲明
  • 測試本地安裝:pip install dist/your-package-*.whl
  • 檢查包名在 PyPI 上的可用性
  • 準(zhǔn)備好 PyPI API Token

?? 版本管理最佳實(shí)踐

  1. 語義化版本控制:

    • 主版本.次版本.修訂版本
    • 不兼容的 API 修改:主版本號遞增
    • 向下兼容的功能性新增:次版本號遞增
    • 向下兼容的問題修正:修訂版本號遞增
  2. 發(fā)布流程:

    # 1. 更新版本號
    # 編輯 pyproject.toml: version = "0.1.1"
    
    # 2. 提交更改
    git add pyproject.toml
    git commit -m "Bump version to 0.1.1"
    git tag v0.1.1
    
    # 3. 構(gòu)建和發(fā)布
    rm -rf dist/ build/ *.egg-info/
    python -m build
    twine upload dist/*
    

?? 高級配置

包含數(shù)據(jù)文件

[tool.setuptools]
include-package-data = true

[tool.setuptools.package-data]
"your_package.data" = ["*.json", "*.txt"]

可選依賴項(xiàng)

[project.optional-dependencies]
dev = ["pytest>=6.0", "black"]
gui = ["tkinter", "pyqt5"]

多平臺腳本

[project.scripts]
my-cli = "my_package:main"

[project.gui-scripts]
my-gui = "my_package.gui:main"

?? 總結(jié)

通過本指南,你可以:

  • 正確配置 pyproject.toml 文件
  • 使用現(xiàn)代工具鏈構(gòu)建 Python 包
  • 安全地將包發(fā)布到 PyPI
  • 解決常見的發(fā)布問題

發(fā)布后,用戶可以通過 pip install your-package-name 安裝你的包,讓你的代碼為社區(qū)所用!

本文基于實(shí)際項(xiàng)目經(jīng)驗(yàn)整理,適用于 Python 3.7+ 和現(xiàn)代打包工具鏈。到此這篇關(guān)于Python包發(fā)布到PyPI的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Python包發(fā)布到PyPI內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)簡單的udp發(fā)送和接收

    python實(shí)現(xiàn)簡單的udp發(fā)送和接收

    這篇文章主要介紹了python實(shí)現(xiàn)簡單的udp發(fā)送和接收方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用 Python 獲取 Linux 系統(tǒng)信息的代碼

    使用 Python 獲取 Linux 系統(tǒng)信息的代碼

    在本文中,我們將會探索使用Python編程語言工具來檢索Linux系統(tǒng)各種信息,需要的朋友可以參考下
    2014-07-07
  • Python連接管理金倉數(shù)據(jù)庫的完全指南

    Python連接管理金倉數(shù)據(jù)庫的完全指南

    本文介紹了Python連接金倉數(shù)據(jù)庫的詳細(xì)指南,重點(diǎn)講解了ksycopg2驅(qū)動的安裝配置,連接管理和高可用實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-04-04
  • Python實(shí)現(xiàn)文件/文件夾復(fù)制功能

    Python實(shí)現(xiàn)文件/文件夾復(fù)制功能

    在數(shù)據(jù)處理和文件管理的日常工作中,我們經(jīng)常需要復(fù)制文件夾及其子文件夾下的特定文件,手動操作不僅效率低下,而且容易出錯,因此,使用編程語言自動化這一任務(wù)顯得尤為重要,所以本文給大家介紹了使用Python實(shí)現(xiàn)文件/文件夾復(fù)制功能,需要的朋友可以參考下
    2025-04-04
  • python爬蟲之requests庫使用代理方式

    python爬蟲之requests庫使用代理方式

    這篇文章主要介紹了python爬蟲之requests庫使用代理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python使用PyCrypto實(shí)現(xiàn)AES加密功能示例

    Python使用PyCrypto實(shí)現(xiàn)AES加密功能示例

    這篇文章主要介紹了Python使用PyCrypto實(shí)現(xiàn)AES加密功能,結(jié)合具體實(shí)例形式分析了PyCrypto實(shí)現(xiàn)AES加密的操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • python隊(duì)列queue模塊詳解

    python隊(duì)列queue模塊詳解

    這篇文章主要為大家詳細(xì)介紹了python隊(duì)列queue模塊的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python如何實(shí)現(xiàn)向上取整

    python如何實(shí)現(xiàn)向上取整

    這篇文章主要介紹了python如何實(shí)現(xiàn)向上取整問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • pycharm 代碼自動補(bǔ)全的實(shí)現(xiàn)方法(圖文)

    pycharm 代碼自動補(bǔ)全的實(shí)現(xiàn)方法(圖文)

    這篇文章主要介紹了pycharm 代碼自動補(bǔ)全的實(shí)現(xiàn)方法(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python+OpenCV圖片局部區(qū)域像素值處理詳解

    Python+OpenCV圖片局部區(qū)域像素值處理詳解

    這篇文章主要為大家詳細(xì)介紹了Python+OpenCV圖片局部區(qū)域像素值處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論

抚顺县| 叶城县| 石家庄市| 确山县| 兴业县| 万州区| 东兰县| 平阳县| 柞水县| 普定县| 元江| 理塘县| 乌拉特后旗| 仙居县| 若尔盖县| 塘沽区| 广灵县| 临安市| 甘南县| 泉州市| 内乡县| 滁州市| 平潭县| 久治县| 达拉特旗| 托克托县| 孙吴县| 河东区| 石屏县| 炉霍县| 买车| 惠水县| 万盛区| 友谊县| 灵丘县| 祁阳县| 门头沟区| 万山特区| 中宁县| 宁南县| 女性|