美文网首页
Python 打包管理工具 setuptools

Python 打包管理工具 setuptools

作者: tafanfly | 来源:发表于2019-04-08 17:48 被阅读0次

    setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。

    安装

    • 系统命令安装(apt-get)

    sudo apt-get install python-setuptools

    • 脚本安装

    wget http://peak.telecommunity.com/dist/ez_setup.py
    sudo python ez_setup.py

    导入setup模块

    导入setup模块有两种方式, 如下:

    from setuptools import setup
    from distutils.core import setup

    distutils是Python标准模块,负责建立Python扩展模块的安装器用的。而setuptools第三方模块, 相比而言拥有更多的优点。如下:

    • 利用EasyInstall自动查找、下载、安装、升级依赖包
    • 创建Python Eggs
    • 包含包目录内的数据文件
    • 自动包含包目录内的所有的包,而不用在setup.py中列举
    • 自动包含包内和发布有关的所有相关文件,而不用创建一个MANIFEST.in文件
    • 自动生成经过包装的脚本或Windows执行文件
    • 支持Pyrex,即在可以setup.py中列出.pyx文件,而最终用户无须安装Pyrex
    • 支持上传到PyPI
    • 可以部署开发模式,使项目在sys.path中
    • 用新命令或setup()参数扩展distutils,为多个项目发布/重用扩展
    • 在项目setup()中简单声明entry points,创建可以自动发现扩展的应用和框架

    setup文件模板

    from setuptools import setup, find_packages
    
    
    setup(
        name='Demo',
        version=0.1,
        description='For Testing',
        author='',
        author_email='',
        url='',
        package_dir={'': 'src'},
        packages=find_packages('src'),
        package_data={'': ['*.ini', '*.txt']},
        install_requires=[
            'requests', 'Flask'],
        platforms='any',
        scripts=['runner'],
    )
    
    • name : 模块的名称
    • version : 发布的版本号
    • description : 关于模块的简单描述
    • author: 开发作者
    • author_email : 开发人员的邮箱
    • url : 模块的homepage
    • package_dir : 告诉distutils包的目录
    • packages: 添加可以引入的Python包, 可以使用find_packages() 函数自动搜索
    • package_data : 添加非Python数据文件
    • install_requires : 指定该模块的依赖包,可以加版本条件。用setuptools安装时会先检查本地有没有符合要求的依赖包,如果没有的话,就会从PyPI中获得一个符合条件的最新的包安装到本地
    • dependency_links : 如果依赖包无法从PyPI中获取,则需要指定其下载路径。路径应指向一个egg包或tar.gz包,也可以是个包含下载地址(一个egg包或tar.gz包)的页面
    • scripts : 安装脚本到标准路径,例如/usr/bin。 安装后可以使用runner这个shell命令。

    打包

    (1)Source distribution
    使用 sdist 可以打包成 source distribution,支持的压缩格式有:

    Format Description Notes
    zip zip file (.zip) Windows 默认
    gztar gzip’ed tar file (.tar.gz) Unix 默认
    bztar bzip2’ed tar file (.tar.bz2)
    xztar xz’ed tar file (.tar.xz)
    ztar compressed tar file (.tar.Z)
    tar tar file (.tar)

    使用方式为:

    $ python setup.py sdist --formats=gztar,zip

    现在目录下多出 dist 目录,dist 内保存了我们打好的包Demo-0.1.tar.gz,上面命令使用 --formats 指定了打出 .tar.gz 和 .zip 包,如果不指定则如上表根据具体平台默认格式打包。
    (2)Built distribution
    使用 bdist 可以打出 built distribution,和源码包相比,由于预先构建好,所以安装更快:

    Format Description Notes
    gztar gzipped tar file (.tar.gz) Unix 默认
    bztar bzipped tar file (.tar.bz2)
    xztar xzipped tar file (.tar.xz)
    ztar compressed tar file (.tar.Z)
    tar tar file (.tar)
    zip zip file (.zip) Windows 默认
    rpm RPM
    pkgtool Solaris pkgtool
    sdux HP-UX swinstall
    wininst self-extracting ZIP file for Windows
    msi Microsoft Installer.

    使用上,和 sdist 一样,可以使用 --formats 指定包格式。如:

    $ python setup.py bdist --formats=rpm

    同时为了简化操作,setuptools 提供了如下命令:

    Command Formats Notes
    bdist_dumb tar, gztar, bztar, xztar, ztar, zip Windows 默认 zip, Unix 默认 gztar
    bdist_rpm rpm, srpm
    bdist_wininst wininst
    bdist_msi msi

    所以上面打 rpm 包可以使用:

    $ python setup.py bdist_rpm

    如果使用 bdist_wininst,打出来的是 exe 安装文件,可以点击安装。
    (3) Wheel
    Wheel 也是一种 built 包,而且是官方推荐的打包方式。
    使用 wheel 打包,首先要安装 wheel:

    $ pip install wheel

    然后使用 bdist_wheel 打包:

    $ python setup.py bdist_wheel

    资料

    关于python中的setup.py
    Python包管理工具setuptools详解
    Python打包分发工具setuptools

    相关文章

      网友评论

          本文标题:Python 打包管理工具 setuptools

          本文链接:https://www.haomeiwen.com/subject/bpouiqtx.html