如何打包一个简单的Python项目,构建软件包,以及将其上传到 Python 软件包索引,分享你的项目。

分为如下几步:新建项目、构建项目、上传项目、安装项目

Poetry

macOS Homebrew 安装 Poetry

brew install poetry

Poetry:https://python-poetry.org

构建项目

新建项目

poetry new project_name

初始化项目

poetry init

配置文件

实例(iGTTS):pyproject.toml

[project]
name = "iGTTS"
version = "0.1.1"
description = "Gemini TTS CLI"
authors = [
    {name = "iChochy",email = "me@ichochy.com"}
]
readme = "docs/README.md"
keywords = ["TTS", "Gemini"]
license-files = "LICENSE"
license = {text = "MIT"}
requires-python = ">=3.13"

dependencies = [
    "google-genai (>=1.36.0,<2.0.0)"
]

[project.scripts]
igtts = "igtts:main"

[project.urls]
Homepage = "https://tts.ichochy.com"

[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"

说明:
dependencies:声明项目的所需依赖包
[project.scripts]:声明项目的命令脚本
[build-system]:声明项目的构建系统

构建项目

配置好 pyproject.toml后,通过配置文件构建项目

poetry build
---------
Building iGTTS (0.1.1)
Building sdist
  - Building sdist
  - Built igtts-0.1.1.tar.gz
Building wheel
  - Building wheel
  - Built igtts-0.1.1-py3-none-any.whl

打包项目文件

dist/
├── igtts-0.1.0.tar.gz
└── igtts-0.1.0-py3-none-any.whl

上传项目

创建 token

在 PyPI 账户设置中创建一个 API token
添加 PyPI token:https://pypi.org/manage/account/token/

pypi-AgEIcHlwaS5vcmcCJDVl...

Poetry 配置 token

poetry config pypi-token.pypi pypi-AgEIcHlwaS5vcmcCJDVl...

发布(publish)

poetry publish
-----------------
Publishing iGTTS (0.1.2) to PyPI
 - Uploading igtts-0.1.2-py3-none-any.whl 100%
 - Uploading igtts-0.1.2.tar.gz 100%

构建 + 发布(build + publish)

poetry publish --build

安装项目

pip install igtts
--------------------
Collecting igtts
  Using cached igtts-0.1.2-py3-none-any.whl (10 kB)
Installing collected packages: igtts
Successfully installed igtts-0.1.2

运行项目

igtts
-------------
语音内容: Hello,这是一个 Gemini TTS CLI 工具,记...
语音名称: Zephyr
开始生成音频...
音频已成功保存到 'output.wav'

iGTTS

一个 Gemini TTS 的终端命名工具,可以将文本信息转为音频文件的终端命令。

iGTTS

https://tts.ichochy.com

总结

至此,使用 Poetry 创建项目、构建打包,再到发布和安装。走完了整个项目发布到 PyPI 流程。


MLeo
232 声望6 粉丝

80后的码农,会点 Java 和 Swift,想在网络上留下点自己的记忆,创建当前网站和大家分享!