能否使用pip搭配pyproject.toml替代setup.py?
用pip搭配pyproject.toml替代setup.py的方案
完全可以用原生pip配合pyproject.toml完成项目配置,不需要引入poetry这类新工具。pip从21.0版本开始就支持PEP 621标准的pyproject.toml文件,完全兼容你现有的pip工作流。
核心配置文件示例
下面是覆盖大多数常见场景的pyproject.toml示例,对应原来setup.py的核心功能:
[build-system] # 指定构建所需的依赖和后端,用pip原生支持的setuptools即可 requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] # 项目基本信息 name = "your-project" version = "0.1.0" authors = [ { name="Your Team", email="team@your-company.com" } ] description = "项目的简短描述" readme = "README.md" # 关联项目说明文档 requires-python = ">=3.8" # 最低Python版本要求 classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ] # 生产环境依赖,对应setup.py的install_requires dependencies = [ "requests>=2.25.1", "numpy>=1.21.0" ] # 可选依赖组,比如开发环境依赖,对应setup.py的extras_require [project.optional-dependencies] dev = [ "pytest>=7.0", "black>=22.0", "flake8>=4.0" ] # 命令行脚本入口,对应setup.py的entry_points.console_scripts [project.scripts] your-cli-tool = "your_project.main:cli_entry"
日常操作命令
所有操作和你原来用setup.py的方式完全一致,不需要改习惯:
- 检查pip版本:确保pip≥21.0,执行
pip --version,版本不够就升级:pip install --upgrade pip - 本地开发安装(带热更新):
pip install -e .[dev](带dev依赖组),或者pip install -e .(只装生产依赖) - 常规安装项目:
pip install . - 打包成wheel/sdist包:先装临时打包工具
pip install build,然后执行python -m build,生成的包会在dist目录下,和原来用setup.py打包的结果一致
迁移注意事项
- 如果原来的setup.py有复杂的动态逻辑(比如动态生成版本号、自定义构建步骤),可以保留一个极简的setup.py作为过渡,或者把逻辑移到
setup.cfg文件中(setuptools支持从setup.cfg读取扩展配置) - 团队成员不需要安装任何新工具,继续用原来的pip命令即可完成所有操作
内容的提问来源于stack exchange,提问作者Ema Il
相关产品推荐
相关产品推荐

