如何使用 setuptools
:从目录结构到配置详解
一、项目目录结构及介绍
setuptools
是 Python 生态中一个关键的包管理工具,它使得Python包的创建、安装、依赖管理和分发变得更加简单。从GitHub仓库 https://github.com/pypa/setuptools.git 下载或克隆该项目后,典型的初始目录结构如下:
setuptools/
│
├── LICENSE.txt # 许可证文件,说明软件使用的授权方式。
├── MANIFEST.in # 指示哪些文件应包含在发布的源代码包中,除了默认的Python文件。
├── README.rst # 项目说明文件,通常包含快速入门指南和项目概述。
├── setup.py # 核心文件,用于构建、打包和安装项目。
├── setuptools # 包含核心模块和函数的src目录(某些版本可能直接包含在根目录下作为模块)。
│ └── ...
├── tests/ # 测试代码目录,用于验证setuptools功能。
│ └── ...
└── ... # 可能还包含其他文档或辅助脚本等。
二、项目的启动文件介绍 - setup.py
setup.py
文件是使用 setuptools
的入口点。它定义了如何构建、安装和打包你的Python项目。一个基本的 setup.py
文件示例会包括元数据如作者、版本、描述以及依赖关系等。例如:
from setuptools import setup, find_packages
setup(
name="Your-Package-Name",
version="0.1",
packages=find_packages(),
install_requires=[
"dependency1",
"dependency2==2.4", # 版本锁定
],
author="Author Name",
author_email="author@example.com",
description="A short description of the package.",
)
通过这个文件,开发者可以控制其项目的安装过程及其与其他Python包的关系。
三、项目的配置文件介绍 - setup.cfg
或 pyproject.toml
虽然问题中没有特别提到 setup.cfg
和 pyproject.toml
,但在现代的Python项目中,特别是在使用 setuptools
进行高级配置时,这两个文件变得越来越重要。
setup.cfg
setup.cfg
允许将一些原本写在 setup.py
中的配置选项外部化,使代码更简洁,也便于自动化处理和维护。例如,可以在 setup.cfg
中指定metadata、指定测试命令、编译选项等。
[metadata]
name = ExampleProject
version = attr: example.__version__
description = A brief description.
long_description_content_type = text/markdown
classifiers =
Programming Language :: Python :: 3
[options]
packages = find:
include_package_data = True
[options.packages.find]
where = src
pyproject.toml
随着PEP 517和PEP 518的引入,pyproject.toml
成为了声明项目构建系统的标准文件,尤其是当使用现代的打包工具如poetry
或指明特定的setuptools
版本时更为常见。
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
此配置告诉Python生态,该怎样构建此项目,使用哪些工具进行依赖管理。
综上所述,理解这些组件对于有效地利用 setuptools
管理和发布Python包至关重要。正确配置这些文件,可以使您的开发流程更加标准化、高效。