Python setuptools 是 Python 包管理工具,用于简化 Python 项目的打包和分发。它是 Python 标准库 distutils 的增强版,提供了更多功能和更易用的界面。
打包 是指将软件及其相关资源(例如代码、库、数据等)组合成一个可安装的文件。
分发 是指将打包好的软件发布给用户。分发可以通过多种方式进行,例如通过网络下载、移动存储设备等。
pip install --upgrade setuptools
- setup.py {#title-0} ======================
setup.py
文件是 Python 项目中重要的配置文件,用于定义项目的打包信息和依赖项。它可以让开发者轻松地将自己的项目分发给其他人安装使用。
1.1 项目元数据 {#title-1}
name
: 项目名称,用于标识项目。示例:name='my-project'
version
: 项目版本号,遵循语义化版本规范(semver)。示例:version='0.1.0'
description
: 项目简介,简要描述项目的功能和用途。示例:description='A simple Python project for demonstrating setup.py usage.'
author
: 项目作者,可以是姓名或组织名称。示例:author='John Doe'
author_email
: 项目作者邮箱地址。示例:author_email='johndoe@example.com'
url
: 项目主页 URL 地址。示例:url='https://github.com/johndoe/my-project'
license
: 项目许可证,指定项目的开源许可证类型。示例:license='MIT'
keywords
: 项目关键词,用于项目搜索和分类。示例:keywords=['python', 'example', 'setup.py']
from setuptools import setup
setup(
# 项目基本信息
name = "mytools",
version = "1.7.3",
description = "工具包",
# 项目作者信息
author = "edward meng",
author_email = "chinacpp@hotmail.com",
# 项目主页地址
url = "https://mengbaoliang.cn/",
license = 'Apache License 2.0',
# 项目的关键字
keywords=['python', 'tools'],
)
1.2 打包配置 {#title-2}
packages
: 需要打包的项目包列表。示例:packages=['myproject', 'myproject.subpackage']
package_dir
: 指定项目包的目录结构。示例:package_dir={'': 'src', 'myproject.subpackage': 'subpackage'}'
data_files
: 需要安装的额外数据文件列表,例如配置文件、文档等。示例:data_files=[('docs', ['README.md', 'LICENSE.txt'])]
include_package_data
: 是否包含项目包中的数据文件。示例:include_package_data=True
exclude_package_data
: 排除项目包中不需要安装的数据文件。示例:exclude_package_data=['test/data', 'docs/build']
packages
表示需要打包的项目包列表,示例:packages=['myproject', 'myproject.subpackage']
。如果包较多的话,手动编写这些名字较为麻烦,可以使用 find_packages
函数来自动获得 setup.py
同级目录下的所有包(包含 __init__.py
的目录)。有时候,我们的包在指定的目录下,此时可以通过 package_dir
来指定包的所在目录。
from setuptools import setup
from setuptools import find_packages
setup(
name="mytools",
version="1.7.3",
description="工具包",
author="edward meng",
author_email="chinacpp@hotmail.com",
url="https://mengbaoliang.cn/",
license='Apache License 2.0',
keywords=['python', 'tools'],
# 指定包
# packages=['mytools', 'mytools.tools1', 'mytools.tools2'],
packages=find_packages(),
)
1.3 依赖项 {#title-3}
install_requires
: 项目运行所需的第三方库依赖项。示例:install_requires=['requests', 'beautifulsoup4']
tests_require
: 项目测试所需的第三方库依赖项。
1.4 入口点 {#title-4}
entry_points
: 指定项目的入口点,例如命令行工具的入口脚本。示例:entry_points={'console_scripts': ['myproject=myproject.myscript:main']}
- 分发 {#title-5} ================