• Python三方库:py2exe打包Python程序


    使用py2exe将一个Python程序打包成一个exe程序,这样Python程序也可以在没有安装Python的环境中运行Python程序了。
    使用这个工具需要写一个用于打包的setup.py文件(名称可以自己定,不一定是setup.py),写好后在命令提示符界面cd到这个文件的目录,执行命令“python setup.py py2exe”即可打包完成。

    下载并安装Python对应版本的py2exe,使用这个工具可以将自己的程序打包成exe文件。
    py2exe for Python2:https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/
    py2exe for Python3:https://pypi.org/project/py2exe/#files 或者 “pip install py2exe”
    关于打包实例和简单说明:http://www.py2exe.org/index.cgi/Tutorial
    关于setup参数选项简单说明:http://www.py2exe.org/index.cgi/ListOfOptions

    打包Python程序时需要注意:
    • “from distutils.core import setup”是必须的,当然最后也要执行setup函数,不然怎么打包呢。
    • “import py2exe”也是必须的,类似其他库的安装命令“python setup.py install”,“py2exe”同“install”一样,也是一种distutils命令,import模块py2exe后会将此命令自动添加进去。
    • 运行完setup.py文件后,也就是打包完成后,会在主文件所在目录创建“build”和“dist”两个目录,“dist”目录包含了打包后的exe程序和运行该程序的其他文件,而“build”目录应该在完成打包后就删除(你如果不删除,等下次再打包这个Python程序的时候就会一个一个文件的问你是否需要覆盖掉)。
    • egg文件如果在打包时报错,直接在文件后面加上“.zip”当做压缩包解压到需要打包的工程目录中即可,把它当做普通的一个包来使用。

       编写setup.py的setup参数选项:

    • data_files:包含一些“数据”文件信息的列表,比如图片文件、配置文件等。列表元素为元组,元组第一个元素为数据文件存放的目录,第二个元素为需要放到这个目录的数据文件列表。例如:data_files = [('images', ['c:/path/to/image/image.png'])]。
    • console:包含了主入口文件等信息的列表,生成一个控制台形式的exe程序。例如:console=['main.py']。
    • windows:包含了主入口文件等信息的列表,生成一个GUI形式的exe程序。例如:windows=['main.py'],列表中也可以是一个字典,字典包含一些打包信息,比如主入口文件、生成的exe程序的图标等。
    • zipfile:公用文件的压缩文件名称,默认为“library.zip”,也可以指定一个目录名称来放置这些公用文件,如果没有,则会将这些文件放在最终的exe文件中。
    • options:包含打包设置信息的字典,一般就设置“py2exe”的值就行了,当然它的值也是一个字典,以下“py2exe”对应字典的键值对作用描述:
      • unbuffered:如果设置为True,则采用无缓冲的stdout和stderr。
      • optimize:文件的优化级别,str类型或int类型的0、1或2:0表示不优化(正常生成.pyc文件),1表示正常优化(如“python -O”生成更加紧凑的.pyo文件),2表示额外优化(如“python -OO”,会在“python -o”的基础上移除文档字符串,也生成.pyo文件)。
      • includes:列表,包含其他的一些模块。
      • packages:列表,包含一些包,包中允许有子包。
      • ignores:列表,包含的模块在打包时没有找到时会自动忽略。
      • excludes:列表,包含的模块不会打包进exe程序。
      • dll_excludes:列表,包含的dll文件不会打包进exe程序。
      • dist_dir:指定特定的目录来放置最终的文件,即“dist”文件夹会放在这个指定目录下。
      • compressed:1或者0,1表示将所有文件都打包压缩在exe文件里,0则不会压缩。
      • bundle_files:1、2或3,是否将dll文件绑定到“zipfile”中或exe文件中,默认值为3:3表示不绑定,2表示除了Python解释器外的dll文件都绑定,1表示绑定包括Python解释器在内的所有dll文件。
      • ascii:布尔值,如果为True,即不用自动包含编码器和解码器。
      • custom-boot-script:指定在打包过程中运行的Python文件。

    以下是参考其他网友写的一个简单的setup.py文件,仅供参考:

     1 # -*- coding: utf-8 -*-
     2 import py2exe  # 这是必须的,导入distutils后,再导入py2exe,会将py2exe命令添加到distutils命令中
     3 from distutils.core import setup  # 这是必须的
     4 
     5 includes = ['encodings', 'encodings.*']
     6 options = {'py2exe':
     7                {'compressed': 1,
     8                 'optimize': 2,
     9                 'ascii': 1,
    10                 'includes': includes,
    11                 'bundle_files': 1,
    12                 'dll_excludes': ['MSVCP90.dll'],
    13                 }
    14            }
    15 
    16 setup(version='1.0.0',
    17       description='description words',
    18       name='name',
    19       options=options,
    20       zipfile=None,
    21       windows=[{'script': 'core\tool.py',  # 需要打包的程序的主文件路径
    22                 'icon_resources': [(1, 'resource\icon.ico')],  # 程序图标的图片路径
    23                 }],
    24       )
  • 相关阅读:
    20199320 2019-2020-2 《网络攻防实践》第2周作业
    20199320 2019-2020-2 《网络攻防实践》第1周作业
    20199320 《网络攻防实践》假期作业
    第二周测试补交-myod
    20199320《Linux内核原理与分析》第十二周作业
    第六周测试补交-sumN
    20199320《Linux内核原理与分析》第十一周作业
    2019-2020-1 20199320《Linux内核原理与分析》第九周作业
    20199309 《网络攻防实践》 综合实践
    20199309 2019-2020-2 《网络攻防实践》第十一周作业
  • 原文地址:https://www.cnblogs.com/guyuyun/p/7004556.html
Copyright © 2020-2023  润新知