Windows下用py2exe将Python程序打包成exe程序的教程


Posted in Python onApril 08, 2015

py2exe在sourceforge 的下载只支持到2.7。

针对python3.0+的版本,需要自己编译。
1.下载源码

svn checkout svn://svn.code.sf.net/p/py2exe/svn/trunk py2exe-svn
2.编译环境

这里使用的是vs2014.
3.安装

进入py2exe-3

python setup.py install

这里会进行编译、安装。

此外,python默认使用的是vs9,针对vs2014,需要改下文件:

Lib\distutils\msvc9compiler.py

寻找:

VERSION = get_build_version()

在下面增加:

VERSION = 11.0

如果出现错误:

Failed to load and parse the manifest. The system cannot find the file specified.
error: command 'mt.exe' failed with exit status 31

解决办法:由于vs2010后的link.exe的参数稍微有些改变,所以在link的时候没有生成manifest文件,自然mt.exe找不到这个文件。只需要在msvc9compiler.py里面搜索一下MANIFESTFILE,然后在他上面加一行 ld_args.append('/MANIFEST'),保存就OK了。(python3.4好像没有这个问题,2.7存在)
4.setup.py

setup.py可以参考官网,其中的参数--bundle-files,需要特别说下,想打成一个整包要设成0.

变化可以参考:http://sourceforge.net/p/py2exe/svn/HEAD/tree/trunk/py2exe-3/
最后附上setup.py

from distutils.core import setup
import py2exe
import sys,os
 
if sys.version_info.major >= 3.0:
  opt_bundle_files = 0
else:
  opt_bundle_files = 1
includes = ["PyQt4.QtCore","PyQt4.QtGui","sip"]
options = {"py2exe":
     { "compressed": 1,
      "optimize": 2,
      "includes": includes,
      "bundle_files": opt_bundle_files,
     }
   }
setup(
  version = "0.1.0",
  description = "test_add",
  options = options,
  zipfile=None,
  console=[{"script": "test_add.py", "icon_resources": [(1, "py.ico")] }],
  #windows=[{"script": "test_add.py", "icon_resources": [(1, "py.ico")] }],
)
Python 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
Python运行的17个时新手常见错误小结
Aug 07 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
python中int与str互转方法
Jul 02 Python
详解Python3序列赋值、序列解包
May 14 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
Python的条件锁与事件共享详解
Sep 12 Python
tensorflow 重置/清除计算图的实现
Jan 19 Python
关于Django Models CharField 参数说明
Mar 31 Python
Python实现自动整理文件的脚本
Dec 17 Python
如何利用python和DOS获取wifi密码
Mar 31 Python
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 #Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 #Python
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 #Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 #Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 #Python
使用IPython来操作Docker容器的入门指引
Apr 08 #Python
仅用50行Python代码实现一个简单的代理服务器
Apr 08 #Python
You might like
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
Python2中的raw_input() 与 input()
2015/06/12 Python
python3中的md5加密实例
2018/05/29 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
实例代码讲解Python 线程池
2020/08/24 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
年终总结会议主持词
2014/03/17 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript