Python 打包
如果你想了解更多关于 Poetry 的信息,可以阅读以下文章:
- 使用 Poetry 和 VSCode 的 Python 项目。第 1 部分
- 使用 Poetry 和 VSCode 的 Python 项目。第 2 部分
- 使用 Poetry 和 VSCode 的 Python 项目。第 3 部分
有关闪电般快速的 Python 包管理器 UV 的全面指南,请阅读:UV:闪电般的 Python 包管理器。
简介
Python 打包是准备你的 Python 项目以供分发和安装的过程。主要有两种方法:传统的 setup.py 方法和现代的 pyproject.toml 方法(定义在 PEP-517、PEP-518 和 PEP-660 中)。
有关处理文件和目录路径的全面指南(这对管理项目结构至关重要),请参阅 文件和目录路径 页面。
传统方法:setup.py
setup.py 文件是传统 Python 项目的核心。它描述了关于你项目的所有元数据。你可以向项目添加相当多的字段,以提供描述该项目的丰富元数据。然而,只有三个字段是必需的:name、version 和 packages。如果希望将包发布到 Python 包索引 (PyPI),name 字段必须是唯一的。version 字段用于跟踪项目的不同版本。packages 字段描述了你在项目中放置 Python 源代码的位置。
这使得你可以轻松安装 Python 包。通常,编写以下内容就足够了:
python setup.py install
然后模块将自行安装。
示例:setup.py
我们最初的 setup.py 还会包含有关许可证的信息,并将重用 README.txt 文件作为 long_description 字段。它看起来像这样:
# setup.py: define package metadata for distribution
from distutils.core import setup
setup(
name='pythonCheatsheet', # Package name (must be unique on PyPI)
version='0.1', # Version number
packages=['pipenv',], # List of packages to include
license='MIT', # License type
long_description=open('README.txt').read(), # Read description from file
)
登录后即可答题并追踪学习进度
setup.py 文件中三个必需的字段是什么?现代方法:pyproject.toml
pyproject.toml 文件是 Python 项目配置的现代标准(PEP-517、PEP-518、PEP-660)。它提供了一种统一的方式,在一个声明性的单一文件中指定构建系统要求和项目元数据。
pyproject.toml 的优势
- 声明式 (Declarative):所有项目元数据集中在一个地方
- 构建系统无关 (Build system agnostic):可与 setuptools、poetry、flit 和其他构建后端配合使用
- 无代码执行 (No code execution):比 setup.py 更安全、更可预测
- 标准化 (Standardized):遵循 PEP 标准,以获得更好的工具支持
示例:pyproject.toml
这是一个使用 setuptools 的基本 pyproject.toml 示例:
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "pythonCheatsheet"
version = "0.1"
description = "A Python cheatsheet package"
readme = "README.txt"
requires-python = ">=3.8"
license = {text = "MIT"}
authors = [
{name = "Your Name", email = "your.email@example.com"}
]
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"black>=22.0",
]
从 pyproject.toml 安装
使用 pyproject.toml,你可以使用 pip 安装你的包:
pip install .
或者以可编辑模式:
pip install -e .
登录后即可答题并追踪学习进度
pyproject.toml 相对于 setup.py 的主要优势是什么?选择正确的方法
- 使用
setup.py:如果你正在处理遗留项目或需要细粒度的控制 - 使用
pyproject.toml:用于新项目(推荐),因为它代表现代标准并提供更好的工具支持
访问官方文档了解更多信息。