版本规则

  • 正式版本由一串被.符号分隔开的数据组成

    • 2.1,代表release 2 的第一个子版本
    • 2.1 == 2.1.0 == 2.01
  • 预发布版本,通常在版本号后加字母tag, 如alpha, a, c, dev

    • 2.4.c1 = 2.4-c1 = 2.4c1
    • c有别名,2.4rc1 = 2.4pre1 = 2.4preview1 = 2.4.c1
    • 2.4 > 2.4c1 > 2.4b1

声明部分功能的特殊依赖

  • 声明(默认不会下载extras_require里面的依赖)
1
2
3
4
5
6
7
8
setup(
    name="Project-A",
    ...
    extras_require={
        'PDF':  ["ReportLab>=1.2", "RXP"],
        'reST': ["docutils>=0.3"],
    }
)
  • 当前项目引用
1
2
3
4
5
6
entry_points={
        'console_scripts': [
            'rst2pdf = project_a.tools.pdfgen [PDF]',
            'rst2html = project_a.tools.htmlgen',
            # more script entry points ...
        ]}
  • 其他项目引用
1
2
3
4
setup(
    name="Project-B",
    install_requires=["Project-A[PDF]"],
)
  • 下载 pip install "Project-A[PDF]"

开发模式

  • 使用: python setup.py develop
  • 执行过程:
    • 执行egg-info命令
    • 在site-package目录创建一个.egg-link文件记录当前项目的绝对路径
    • site-packages/easy-install.pth记录当前项目的绝对路径(.pth文件的内容会加载到sys.path)
    • 下载项目依赖
  • 等效命令 pip intall -e .

安装

  • 使用 python setup.py install
  • 执行过程
    • 执行egg-info命令
    • 执行build命令
    • 创建egg(bdist_egg命令,egg和OS、python版本相关)
    • 解压egg到site-packages目录
    • site-packages/easy-install.pth记录egg文件夹的相对路径
    • 下载项目依赖

wheel

  • 新的发布包格式,the standard for built and binary packaging for Python.
  • 使用: python setup.py bdist_wheel
  • pip install . 安装时会构建wheel而非egg
  • 可以像sdsit一样跨平台

参考