跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Python中setup.py作用 传统Python包配置setup.py文件编写指南

setup.py的作用是定义和配置可安装的 python 包,用于声明包名、版本、依赖等信息。它通过调用setuptools.setup()函数实现包的构建与安装逻辑,常用于传统项目中。编写时需注意使用find_packages()自动发现包结构,install_requires声明依赖项,并填写作者、描述等元数据。常见注意事项包括:手动更新版本号、避免打包测试代码、合理使用console_scripts定义入口脚本、区分运行依赖与开发依赖。虽然setup.py仍是许多老项目的核心工具,但新项目推荐使用pyproject.toml等现代方案替代。 在Python项目中,
setup.py
的作用主要是定义和配置一个可安装的Python包。它不是必须的(现在也有其他工具如
pyproject.toml
),但在很多传统项目和工具链中仍然非常常见。简单来说,它是告诉pip、setuptools等工具“这个包叫什么、包含哪些内容、依赖哪些库”等信息的核心文件。 什么是setup.py
setup.py
是一个Python脚本,通常放在项目的根目录下。它的核心作用是调用
setuptools.setup()
函数来声明包的元数据和构建逻辑。当你运行
python setup.py install
或者
pip install .
时,系统就会读取这个文件并据此安装你的包。 它里面常见的字段包括:
name
: 包名
version
: 版本号
packages
: 要打包的模块列表
install_requires
: 安装依赖
author
,
description
,
url
等基本信息 如何编写一个基本的setup.py 写一个可用的
setup.py
其实不难,重点在于结构清晰、信息准确。下面是一个最简示例: 立即学习 “ Python免费学习笔记(深入) ”;
from setuptools import setup, find_packages setup( name='my_package', version='0.1.0', packages=find_packages(), install_requires=[ 'requests', 'numpy' ], author='Your Name', description='A simple example package', url='https://github.com/yourname/yourrepo', )
关键点说明: 使用
find_packages()
可以自动发现所有含
__init__.py
的目录作为包
install_requires
用来声明依赖项,确保用户安装时不缺组件 尽量填写完整作者、描述等信息,这对发布到PyPI很重要 常见注意事项和坑点 虽然
setup.py
看起来简单,但实际使用中还是有几个容易忽略的地方: 版本号更新要手动改 :不像某些语言可以自动生成,Python包的版本号需要你每次发版时手动修改。 Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载 不要把测试代码打进包里 :如果你用了
find_packages()
,记得加上
exclude=['tests*']
避免误打包。 入口脚本可以用console_scripts定义 :比如你想让用户通过命令行直接运行某个脚本,可以加:
entry_points={ 'console_scripts': [ 'mycmd=my_package.cli:main', ], },
注意区分开发依赖和运行依赖 :有些库只是用于测试或构建文档,不应该出现在
install_requires
里。可以通过
extras_require
来分组管理。 是否还值得继续用setup.py 虽然
setup.py
很经典,但现在官方推荐使用
pyproject.toml
配合
build
或者
poetry
等现代工具来管理项目。
setup.py
本身已经被标记为“legacy”,但目前仍有大量项目依赖它,尤其是企业内部的老项目。 所以结论是:如果你维护的是老项目,了解和掌握
setup.py
依然是必要的;如果是新项目,可以考虑更现代化的方式,但理解它的原理仍然有帮助。 基本上就这些。setup.py不算复杂,但细节很容易忽略,特别是在版本管理和依赖控制上,稍不注意就可能让使用者踩坑。

相关文章