Python包的创建、打包和发布

Python包的创建、打包和发布

在这篇文章中,我将向你展示如何创建一个 Python 包,然后将其打包并发布到 Python 包索引(PyPI)上。这是一个非常实用的技能,可以让你的代码更容易被其他人使用和分享。

1. 准备项目结构首先,我们需要创建一个项目文件夹,例如 packaging_tutorial。在这个文件夹内,我们创建一个源代码文件夹 src。然后,在 src 文件夹内创建你的包文件夹,例如 example_package_YOUR_USERNAME_HERE。最后,在包文件夹内创建 __init__.py 和示例模块文件 example.py。

项目结构如下:

代码语言:plain复制packaging_tutorial/

├── LICENSE

├── pyproject.toml

├── README.md

├── src/

│ └── example_package_YOUR_USERNAME_HERE/

│ ├── __init__.py

│ └── example.py

└── tests/2. 配置项目元数据接下来,我们需要在 pyproject.toml 文件中配置项目的元数据。这包括项目的名称、版本、作者、描述、Python 版本要求等信息。同时,我们还需要创建一个 LICENSE文件(模板)和一个 README.md 文件。

pyproject.toml 文件的内容如下:

代码语言:toml复制[project]

name = "example_package_YOUR_USERNAME_HERE"

version = "0.0.1"

authors = [

{ name="Example Author", email="author@example.com" },

]

description = "A small example package"

readme = "README.md"

requires-python = ">=3.8"

classifiers = [

"Programming Language :: Python :: 3",

"License :: OSI Approved :: MIT License",

"Operating System :: OS Independent",

]

[project.urls]

Homepage = "https://github.com/pypa/sampleproject"

Issues = "https://github.com/pypa/sampleproject/issues"

# 构建后端,默认为 Hatchling

[build-system]

requires = ["hatchling"]

build-backend = "hatchling.build"3. 打包项目接下来,我们需要打包我们的项目。首先,我们需要安装打包工具 build。然后,我们可以使用 build 命令来打包我们的项目。这将在 dist 目录下生成 .whl 和 .tar.gz 文件。

代码语言:sh复制# 安装打包工具

python3 -m pip install --upgrade build

# 打包

python3 -m build传统项目也使用写 setup.py 文件,然后通过 python setup.py sdist bdist_wheel 命令打包,因为长期以来 Setuptools 是 Python 项目打包的事实标准。使用 build 来打包是更现代的方式。

4. 注册 TestPyPI 账号并获取 Token在上传我们的包之前,我们需要在 TestPyPI 上注册一个账号,并获取一个 Token。

5. 上传包接下来,我们需要安装上传工具 twine,然后使用 twine 命令来上传我们的包。

代码语言:sh复制# 安装上传 PyPI 的工具 twine

python3 -m pip install --upgrade twine

# 上传

python3 -m twine upload --repository testpypi dist/*6. 验证包最后,我们可以安装我们的包并验证其功能。

代码语言:python代码运行次数:0运行复制# Install

# python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-package-YOUR-USERNAME-HERE

from example_package_YOUR_USERNAME_HERE import example

example.add_one(2)7. 上传到正式的 PyPI如果一切都正常,我们可以将我们的包上传到正式的 PyPI 上。

更多内容可以参考官方指引 Python Packaging User Guide。

相关故事

正当防卫3怎么存档,正当防卫3完美存档方法
365365bet

正当防卫3怎么存档,正当防卫3完美存档方法

【PC游戏】半口气带你看完《求生之路》系列剧情!1和2到底讲了什么故事?
365365bet

【PC游戏】半口气带你看完《求生之路》系列剧情!1和2到底讲了什么故事?

火影忍者村落介绍:十六个村落大不同,代表性忍者体现村落风俗!
365bet体育在线中文

火影忍者村落介绍:十六个村落大不同,代表性忍者体现村落风俗!