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是一个Python脚本,通常放在项目的根目录下。它的核心作用是调用setuptools.setup()函数来声明包的元数据和构建逻辑。当你运行 python setup.py install 或者 pip install . 时,系统就会读取这个文件并据此安装你的包。
它里面常见的字段包括:
写一个可用的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', )
关键点说明:
虽然setup.py看起来简单,但实际使用中还是有几个容易忽略的地方:
版本号更新要手动改:不像某些语言可以自动生成,Python包的版本号需要你每次发版时手动修改。
不要把测试代码打进包里:如果你用了find_packages(),记得加上 exclude=['tests*'] 避免误打包。
入口脚本可以用console_scripts定义:比如你想让用户通过命令行直接运行某个脚本,可以加:
entry_points={ 'console_scripts': [ 'mycmd=my_package.cli:main', ], },
注意区分开发依赖和运行依赖:有些库只是用于测试或构建文档,不应该出现在install_requires里。可以通过extras_require来分组管理。
虽然setup.py很经典,但现在官方推荐使用pyproject.toml配合build或者poetry等现代工具来管理项目。setup.py本身已经被标记为“legacy”,但目前仍有大量项目依赖它,尤其是企业内部的老项目。
所以结论是:如果你维护的是老项目,了解和掌握setup.py依然是必要的;如果是新项目,可以考虑更现代化的方式,但理解它的原理仍然有帮助。
基本上就这些。setup.py不算复杂,但细节很容易忽略,特别是在版本管理和依赖控制上,稍不注意就可能让使用者踩坑。
以上就是Python中setup.py作用 传统Python包配置setup.py文件编写指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号