setup.py 是 Python 项目中用于项目构建和分发的传统脚本。它是 setuptools 的一部分,一个用于定义、构建和安装 Python 包的库。通过 setup.py,您可以控制项目的打包和分发过程,包括如何构建源代码、安装依赖、打包以及如何安装这个包。
创建 setup.py:
-
在项目根目录下创建文件:在您的项目根目录下创建一个名为
setup.py的文件。 -
填写基本信息:下面是一个基本的
setup.py文件结构的例子:pythonCopy code from setuptools import setup, find_packages setup( name='your_package_name', # 包名 version='0.1', # 版本号 packages=find_packages(), # 自动查找项目中的包 install_requires=[ # 这里填写项目运行所需的依赖 # 例如: 'requests>=2.0' ], entry_points={ 'console_scripts': [ # 可以定义命令行工具的入口点 # 例如: 'your_script = your_package.module:main_function' ], }, # 其他可选参数 author='Your Name', author_email='your.email@example.com', description='A short description of your project', long_description=open('README.md').read(), long_description_content_type='text/markdown', # 如果使用markdown作为README文件 url='https://github.com/yourusername/your_package', classifiers=[ # 分类信息,用于PyPI 'Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', ], python_requires='>=3.6', # 对Python版本的要求 )
setup.py 的作用:
- 定义项目元数据:包括项目名、版本、作者、联系方式等。
- 管理依赖:列出项目运行所需的依赖包。
- 打包与分发:定义如何将项目打包成可分发的格式,例如 wheel 或 source distribution。
- 安装脚本:当其他用户通过 pip 安装您的包时,
setup.py定义了安装过程。 - 入口点定义:如果您的包包含命令行工具,可以在此定义入口点。
注意事项:
setup.py通常与requirements.txt(列出依赖包)和README.md(项目描述)一起使用。- 新的 Python 项目可能会倾向于使用更现代的打包工具,如 Poetry 或 Flit,它们使用
pyproject.toml文件代替setup.py。但是,setup.py依然广泛用于许多现有项目。