使用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文件,仅供参考:

 # -*- coding: utf-8 -*-
import py2exe # 这是必须的,导入distutils后,再导入py2exe,会将py2exe命令添加到distutils命令中
from distutils.core import setup # 这是必须的 includes = ['encodings', 'encodings.*']
options = {'py2exe':
{'compressed': 1,
'optimize': 2,
'ascii': 1,
'includes': includes,
'bundle_files': 1,
'dll_excludes': ['MSVCP90.dll'],
}
} setup(version='1.0.0',
description='description words',
name='name',
options=options,
zipfile=None,
windows=[{'script': 'core\\tool.py', # 需要打包的程序的主文件路径
'icon_resources': [(1, 'resource\\icon.ico')], # 程序图标的图片路径
}],
)

Python学习笔记:py2exe打包Python程序的更多相关文章

  1. [python学习笔记] py2exe 打包

    遇坑 之前经过折腾,pyinstaller打包文件可以在别的windows7上运行.但是,mfk, 客户说是xp系统.崩溃 使用pyinstaller各种折腾,打包出来的依然是不是有效的win32程序 ...

  2. [python学习笔记] pyinstaller打包pyqt5程序无法运行

    问题 pyinstaller打包的pyqt5程序在部分电脑上会失败.用户截图提示下边错误日志 无法定位程序输入点 ucrtbase.terminate 于动态链接库 api-ms-win-crt-ru ...

  3. python学习笔记1之-python简介及其环境安装

    python学习笔记之-python简介及其环境安装 最近几年python之火不用多说,最近开始利用时间自学python,在学习的过程中,按照自己的思路和理解记录下学习的过程,并分享出来,如果正好你也 ...

  4. python学习笔记(六)——程序调试

    在我们平时编写程序时,常常会遇到各种错误,俗称BUG.而我们程序猿的工作常常需要对程序进行调试,也就是所谓的debug. 程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法 ...

  5. Python学习笔记之二——Python的运行机制,一般人肯定不会

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:XX   Python解释器简介   解释器是一种让其他程序运行起来的程 ...

  6. Python学习笔记1-搭建Python环境 和 Python Hello World!

    一.搭建Python开发环境 1.选择开发工具 首先要寻找一个Python的开发工具,Python的开发工具有很多,有pyCharm .Eclipse.Visual studio等等 ,使用最多的还是 ...

  7. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...

  8. python学习笔记(12)--程序设计方法学

    计算思维: 逻辑思维:推演和演绎 实证思维:实验和验证,引力波->实验 计算思维:设计和构造,计算机为代表,汉诺塔递归. 计算思维特征 抽象和自动化,抽象问题的计算过程,利用计算机自动化求解. ...

  9. python学习笔记(2)——练习小程序之 " input " 隐藏陷阱

    练习小程序之 ----------" input " 隐藏陷阱 age=input('please enter your age:') if age>=18: print(' ...

  10. python学习笔记(二)——程序结构

    1. 选择结构: if 语句:单分支.双分支.多分支 **单分支结构** if 条件表达式: 语句块 **双分支结构** if 条件表达式: 语句块 else: 语句块 **多分支结构** if 条件 ...

随机推荐

  1. Django -- 权限初识

    待 需求分析-场景 假设需要为公司设计一个人员管理系统,并为各级领导及全体员工分配系统登录账号.有如下几个要求: 1.权限等级不同 公司领导登录后可查看所有员工的信息,部门领导登陆后之可查看本部门员工 ...

  2. applicationContext中普通数据源不用jndi数据源

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  3. guacamole的复制粘贴

    一.发送中文或文本(针对开发环境,生产环境不需变动) 官方下载的完整版js缺失了一部分关于粘贴板的代码,调用setclipboard方法,将外部内容复制到粘贴板的时候,提示方法不存在.需要补齐这部分源 ...

  4. 《java学习二》并发编程

    多线程创建方式 1.继承thread类,重写run方法 CreateThread createThread = new CreateThread();     ------createThread  ...

  5. springcloud-Netflix创建服务消费者

    目录 springcloud-Netflix创建服务消费者 Ribbon 创建服务消费者-Ribbon方式 ribbon的架构 Feign 创建包和基本项目结构 创建Feign访问服务的接口和访问co ...

  6. ”position”之绝对定位深入理解

    要点: 1.绝对元素脱离文档流 它从文档流中脱离了出来,后面的元素会填充掉它原来的位置 2.绝对定位元素定位 以离他最近的.有定位的.祖先元素 为准 参照对象决定元素的位置 情况1 <div ( ...

  7. Oracle创建用户、表(1)

    Oracle创建用户.表(1) 1. 连接 C:\Users\LEI>sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on ...

  8. Google Chrome 浏览器的备用(离线)安装程序

    Google Chrome 浏览器的备用(离线)安装程序(适用于 Windows) 如果您在使用 http://www.google.com/chrome 上的标准安装程序下载 Chrome 浏览器时 ...

  9. iOS-浅谈runtime运行时机制02-runtime简单使用

    http://blog.csdn.net/jiajiayouba/article/details/44201079 由于OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方 ...

  10. C#字段声明部分如何调用该类中的方法进行初始化?

    问题描述: 有时,功能需求,需要在初始化字段时,需要视不同情况赋予不同字段值. 解决办法: 将方法设为static即可. e.g. public string str = SetStr(); publ ...