在Python项目中,setup.py
文件用于定义项目的元数据、依赖关系和其他配置信息
-
使用
setuptools
库:确保使用setuptools
而不是distutils
,因为setuptools
提供了更多的功能和更好的兼容性。 -
简化
setup.py
内容:只包含必要的字段和配置。避免在setup.py
中添加不必要的代码或逻辑。 -
使用
find_packages()
自动发现包:find_packages()
函数会自动发现并包含项目中的所有包,无需手动列出它们。from setuptools import setup, find_packages setup( name="your_project_name", version="0.1", packages=find_packages(), )
-
使用
setuptools_scm
自动管理版本:setuptools_scm
可以自动从源代码中获取版本信息,无需手动更新版本号。from setuptools import setup from setuptools_scm import get_version setup( name="your_project_name", use_scm_version=True, )
-
使用
extras_require
指定可选依赖:通过extras_require
参数,可以为不同的项目配置提供可选的依赖关系。from setuptools import setup setup( name="your_project_name", version="0.1", install_requires=[ # 必需依赖 ], extras_require={ "dev": [ # 开发环境依赖 ], "prod": [ # 生产环境依赖 ], }, )
-
使用
entry_points
定义命令行接口:entry_points
参数允许您定义命令行接口,使项目更容易使用。from setuptools import setup setup( name="your_project_name", version="0.1", entry_points={ "console_scripts": [ "your-command = your_package.main:main_function", ], }, )
-
使用
classifiers
提供项目元数据:classifiers
参数可以帮助其他人更好地了解您的项目,例如支持的Python版本、许可证等。from setuptools import setup setup( name="your_project_name", version="0.1", classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], )
遵循这些建议,可以使您的setup.py
文件更加简洁、易于维护,并提高项目的可读性。