zoukankan      html  css  js  c++  java
  • Python的打包工具(setup.py)实战篇

                    Python的打包工具(setup.py)实战篇

                                  作者:尹正杰 

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

      当你写好一个Python项目时,想要开源或者给别的小伙伴使用,这个时候就可以考虑使用打包工具来做这个事情,Python内置的setup.py工具就自带了这个功能,本片博客将带你来打包一个自己写的python项目。

      学会python打包后,可以把自己写好的模块发布到公共的PyPI(https://pypi.org/)上,也可以搭建PyPI私服,供企业内部使用。

      目前PyPI里面的模块没用太好的审核机制,不保证安全,因此要慎重使用。据说,数据分析领域基于python的开源模块在不同的操作系统算出的结果竟然不同,这意味着所有基于该模块的计算发表的论文结果都是不准确的!

    一.查找setup帮助文档

    1>.找到setup的帮助文档,如下图所示

    2>.如下图所示,点击"Distttributing Python Modules(Legacy version)"

    3>.如下图所示,点击"Writing the Setup Script"

    4>.阅读官网文档

    5>.在自己的项目根目录下创建setup.py文件,修改内容如下所示

    # !/usr/bin/env python
    # -*- coding:utf-8 -*-
    # @author :yinzhengjie
    # blog:https://www.cnblogs.com/yinzhengjie
    
    from distutils.core import setup
    
    setup(
        # 指定项目名称,我们在后期打包时,这就是打包的包名称,当然打包时的名称可能还会包含下面的版本号哟~
        name='devops',
        # 指定版本号
        version='0.1.1',
        # 这是对当前项目的一个描述
        description='Python automatic operation and maintenance platform',
        # 作者是谁,指的是此项目开发的人,这里就写你自己的名字即可
        author='yinzhengjie',
        # 作者的邮箱
        author_email='y1053419035@qq.com',
        # 写上项目的地址,比如你开源的地址开源写博客地址,也开源写GitHub地址,自定义的官网地址等等。
        url='https://www.cnblogs.com/yinzhengjie/p/14124623.html',
        # 指定包名,即你需要打包的包名称,要实际在你本地存在哟,它会将指定包名下的所有"*.py"文件进行打包哟,但不会递归去拷贝所有的子包内容。
        # 综上所述,我们如果想要把一个包的所有"*.py"文件进行打包,应该在packages列表写下所有包的层级关系哟~这样就开源将指定包路径的所有".py"文件进行打包!
        packages=['devops', "devops.dev", "devops.ops"],
    )

    二.使用setup.py工具对自定义package进行打包操作

    1>.查看setup.py工具的帮助信息

    python setup.py --help-commands

    2>.编译python的包(本质上是新建了一个build目录,而后将指定的packages列表包下的所有".py"文件拷贝过去)

    python setup.py build

    3>.将源文件进行打包操作

    python setup.py sdist

    4>.基于我们刚刚打包的文件进行安装

    pip install test/dist/devops-0.1.1.tar.gz

    5>.卸载咱们刚刚安装的包

    pip uninstall devops

    三.bdist命令

      bdist命令是一个二进制分发包,或称作安装程序。该命令可以生成模板操作系统的安装程序。

    1>.制作windows下的安装包

    python setup.py bdist_wininst  # 创建"*.exe"的文件
    python setup.py bdist_msi  # 创建"*.msi"的文件
    python setup.py bdist --format=msi  # 同样是创建"*.msi"的文件

    2>.制作rpm包

    python setup.py bdist_rpm  # 创建"*.rpm"的文件,该命令需要在Linux操作系统上执行!
    python setup.py bdist --format=rpm  # 同上

    3>.制作压缩文件

    python setup.py bdist --format=zip  # 创建"*.zip"压缩文件
    python setup.py bdist --format=gztar  # 创建"*.tar.gz"文件

    四.将python打包成egg包或者whl包(本质上是一个zip文件)

    1>.安装wheel模块

    pip install wheel

    2>.修改"setup.py"文件

    # !/usr/bin/env python
    # -*- coding:utf-8 -*-
    # @author :yinzhengjie
    # blog:https://www.cnblogs.com/yinzhengjie
    
    # from distutils.core import setup
    from setuptools import setup  # 注意哈,setuptools是基于distutils进行封装的,但打wheel包时要从setuptools包导入setup模块哟~
    
    setup(
        # 指定项目名称,我们在后期打包时,这就是打包的包名称,当然打包时的名称可能还会包含下面的版本号哟~
        name='devops',
        # 指定版本号
        version='0.1.1',
        # 这是对当前项目的一个描述
        description='Python automatic operation and maintenance platform',
        # 作者是谁,指的是此项目开发的人,这里就写你自己的名字即可
        author='yinzhengjie',
        # 作者的邮箱
        author_email='y1053419035@qq.com',
        # 写上项目的地址,比如你开源的地址开源写博客地址,也开源写GitHub地址,自定义的官网地址等等。
        url='https://www.cnblogs.com/yinzhengjie/p/14124623.html',
        # 指定包名,即你需要打包的包名称,要实际在你本地存在哟,它会将指定包名下的所有"*.py"文件进行打包哟,但不会递归去拷贝所有的子包内容。
        # 综上所述,我们如果想要把一个包的所有"*.py"文件进行打包,应该在packages列表写下所有包的层级关系哟~这样就开源将指定包路径的所有".py"文件进行打包!
        packages=['devops', "devops.dev", "devops.ops"],
    )

    3>.打包whl和egg格式,如下图所示

    python setup.py bdist_egg  # 打"*.egg"的包
    python setup.py bdist_wheel  # 打"*.whl"的包

  • 相关阅读:
    【Jmeter】分布式并发测试
    【博客迁移】
    设置超出范围有滚动条
    table中td,th不能设置margin
    文字和input对不齐怎么办
    改变radio单选按钮的样式
    transition的用法以及animation的用法
    选择后代元素或点击元素的方法
    如何简单实用hammer
    添加aimate动画
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/14124623.html
Copyright © 2011-2022 走看看