知方号

知方号

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 的工具 twinepython3 -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-HEREfrom example_package_YOUR_USERNAME_HERE import exampleexample.add_one(2)7. 上传到正式的 PyPI

如果一切都正常,我们可以将我们的包上传到正式的 PyPI 上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。