Python setuptools 

Python setuptools 是 Python 包管理工具,用于简化 Python 项目的打包和分发。它是 Python 标准库 distutils 的增强版,提供了更多功能和更易用的界面。

打包 是指将软件及其相关资源(例如代码、库、数据等)组合成一个可安装的文件。
分发 是指将打包好的软件发布给用户。分发可以通过多种方式进行,例如通过网络下载、移动存储设备等。

pip install --upgrade setuptools

1. setup.py

setup.py 文件是 Python 项目中重要的配置文件,用于定义项目的打包信息和依赖项。它可以让开发者轻松地将自己的项目分发给其他人安装使用。

1.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 打包配置

  • 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 依赖项

  • install_requires: 项目运行所需的第三方库依赖项。示例:install_requires=['requests', 'beautifulsoup4']
  • tests_require: 项目测试所需的第三方库依赖项。

1.4 入口点

  • entry_points: 指定项目的入口点,例如命令行工具的入口脚本。示例:entry_points={'console_scripts': ['myproject=myproject.myscript:main']}

2. 分发

未经允许不得转载:一亩三分地 » Python setuptools 
评论 (0)

6 + 3 =