py2exe打包python成.exe文件

打包过程和结果

1、创建setup脚本打包文件,其中设置打包的属性和方法。注意:尽量将被打包文件和此打包脚本放在同目录下(因为在尝试非同目录下时,出现了非可再现性的寻找被打包文件失败)

2、在cmd命令行,进入setup打包脚本所在命令行,执行此脚本文件(python setup.py py2exe)

3、默认出现built和dist两个文件。dist文件中的内容即为打包程序的内容,也即可发布的内容。

打包过程遇到的问题:

1、Win10系统文件缺失,值后发现这些文件可以在dll_exclude[]属性中设置不包含进来。在使用Win7系统时,并没有出现文件缺失。参考以下文件,其中包括:

"api-ms-win-core-string-l1-1-0",

"api-ms-win-core-libraryloader-l1-2-1.dll",

"api-ms-win-core-profile-l1-1-0.dll",

"api-ms-win-core-processthreads-l1-1-2.dll",

"api-ms-win-core-handle-l1-1-0.dll",

"api-ms-win-core-registry-l1-1-0.dll",

"api-ms-win-core-file-l1-2-1.dll",

"api-ms-win-core-heap-l1-2-0.dll",

"api-ms-win-core-version-l1-1-1.dll",

"api-ms-win-core-heap-l2-1-0.dll",

"api-ms-win-core-io-l1-1-1.dll",

"api-ms-win-core-localization-l1-2-1.dll",

"api-ms-win-core-sysinfo-l1-2-1.dll",

"api-ms-win-core-synch-l1-2-0.dll",

"api-ms-win-core-errorhandling-l1-1-1.dll",

"api-ms-win-core-version-l1-1-0.dll",

"api-ms-win-core-string-l2-1-0.dll",

"api-ms-win-security-base-l1-2-0.dll",

"api-ms-win-eventing-provider-l1-1-0.dll",

"api-ms-win-core-com-l1-1-1.dll",

"api-ms-win-core-memory-l1-1-2.dll"

2、MemoryLoadLibrary failed loading cv2.pyd 此错误通过修改zipfile = None,使其生成打包文件后解压缩。再打开程序时,程序打包成功,可正常运行。

Py2exe打包脚本属性设置问题:

1、Version ,Description,Name不是必须的。

2、Windows 创建一个图形用户界面程序

3、Console 创建一个控制台程序

4、dist_dir 打包生成的文件放在dist下,可设置存放目录(一般没有特殊要求,可以不需修改。可使用相对路径)

5、Compressed 默认为0,1为指定压缩文件(library.zip)的行为;0为不压缩。

6、Zipfiles 来配置共享压缩文件的生成目录和文件名,默认是在目录 dist 下生成一个 “library.zip”文件,打包了 .exe文件运行需要的 .pyd 和 .dll 文件(不包含配置文件等)。

7、Optimize 打包优化,合法值是字符串('','O','OO')或者整型数字 (0, 1, or 2)。0时,不进行优化,压缩包大小较大,打包的编译文件为 .pyc;1时,进行少量优化,压缩包大小略小,打包的编译文件为 .pyo;2时,优化级别最高,压缩包大小也明显变小,打包的编译文件为 .pyo。

8、Bundle_files 打包绑定,64位不支持此属性。 0:pyd和dll文件不会被打包到exe文件中; 1:pyd和dll文件会被打包到exe文件中,且不能从文件系统中加载python模块; 2:pyd和dll文件会被打包到exe文件中,但是可以从文件系统中加载python模块。

注:.py: 这是编写的源文件。

.pyc: 这是编译过的二进制代码文件. 如果导入一个模块, python 将创建一个 *.pyc 文件,文件中内为二进制码,这样可以在再次导入时更容易(更快)。

.pyo: 这是一个当优化等级 (-O) 开启时生成的 *.pyc 文件。

.pyd: 这个相当于一个 windows dll 文件.实际上.pyd文件就是dll文件,只是略有不同。

9、Date_files文件可执行文件所需数据。在python27中,需要的MSVCP90.dll不能单独发布,必须确保 py2exe 复制所有的三个 dll 文件和 manifest 文件到工程目录 dist 下,并且放在一个名为 'Microsoft.VC90.CRT' 的子目录下。

参考做法为:from glob import glob  data_files = [("Microsoft.VC90.CRT", glob(r'C:\Program Files\Microsoft Visual Studio freeze_support9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*'))]

10、ascii  0:不包含编码和解码器;1则反之。

11、出现的QPixmap::scaled: Pixmap is a null pixmap问题,这是由于pyqt和qt都是默认的png格式的图片,打包后,会找不到jpg格式的图片,所以在打包过程中需要把pyqt4文件中的imageformats文件夹下的dll文件导入。这是jpg格式的图片需要的插件。

12、类标识符无属性,产生的CLSID无属性。

typelibs

列表:需要包含的gen_py产生的typelibs

13、多进程打包遇到的程序不正常执行问题,需要在多进程之前调用freeze_support()函数。经试验,最好在函数开始执行的时候,首先调用此函数。

py2exe打包遇到的问题的更多相关文章

  1. py2exe 打包scipy时遇到的问题

    最近写了个小程序,用PyQt5做的界面,写完之后用py2exe打包成独立的exe文件,运行正常. 后来由于需要,调用SciPy.io.loadmat,改写setup.py,打包之后运行错误,提示: T ...

  2. python+pygame游戏开发之使用Py2exe打包游戏

    最近在用python+pygame 开发游戏,写完以后在分享给朋友玩的时候遇到了很大的问题,只有搭建了环境才能运行python脚本. 这会吓退99%以上的人……所以把我们的游戏打包(注意是打包而不是编 ...

  3. 使用py2exe打包你的py程序

    软件环境:python3.3.4 + PyQt5 使用py2exe打包写好的py文件,过程如下: 在你要打包的代码文件(比如sample.py)的同文件夹建立一个python代码文件(比如setup. ...

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

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

  5. PyQt4 py2exe 打包 HardwareManager

    #!/usr/bin/env python # -*- coding: UTF-8 -*- # 1. 以下代码保存在HardwareManager项目的目录下,名称叫:setup.py: # 2. 打 ...

  6. 通过py2exe打包python程序的过程中,解决的一系列问题

    py2exe的使用方法参考<py2exe使用方法>. 注:程序可以在解释器中正常运行,一切问题都出在打包过程中. 问题1: 现象:RuntimeError: maximum recursi ...

  7. py2exe打包OpenCV,找不到libiomp5md.dll

    问题:py2exe打包OpenCV,找不到libiomp5md.dll 解决方法:把 libiomp5md.dll 从numpy/core/ 里面复制到 python27/DLLS/文件夹!!!

  8. 用py2exe打包成一个exe文件

    用py2exe打包成一个exe文件 http://blog.csdn.net/franktan2010/article/details/46514607

  9. 用py2exe打包pyqt4出现的问题(转)

    使用pyqt完成窗体界面很方便,但是打包成exe之后会有问题,在网上找到解决办法如下: Another Solution to the same problem: from distutils.cor ...

随机推荐

  1. RabbitMQ在Ubuntu上的环境搭建

    1.修改/etc/apt/sources.list文件 A:命令:vi /etc/apt/sources.list B:在最后一行加上:deb http://www.rabbitmq.com/debi ...

  2. zk strom 本地环境启动命令

    bin/zkServer.sh statusbin/zkServer.sh startbin/storm nimbus &bin/storm ui &bin/storm drpc &a ...

  3. 编译Openwrt的log

    Openwrt配置: Target System (Ralink RT288x/RT3xxx) ---> Subtarget (MT7688 based boards) ---> Targ ...

  4. 如何在Tomcat (6/7/8.0) 安装SSL证书

    第一步:进入Tomcat安装目录,把证书的jks格式文件放在tomcat安装目录的conf目录下即可. conf/ssl/371cloud.cn.jks 第二步: 打开tomcat配置文件 conf/ ...

  5. noip模拟赛 财富

    题目描述LYK有n个小伙伴.每个小伙伴有一个身高hi.这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在这里的每个人都羡慕比自己身高高的人,而每个人都有一个属性ai表示它对身高的羡慕值.这n ...

  6. BZOJ1443 游戏game (二分图染色+匈牙利算法)

    先对整幅图进行二分图染色,再跑一遍匈牙利算法.如果最大匹配数=点数*2,那么输出WIN. 对于任何一个非必须在最大匹配上的点,即为所求的点. Program Test375num2; type arr ...

  7. nyoj_33_蛇形填数_201308221636

    蛇形填数时间限制:3000 ms  |  内存限制:65535 KB 难度:3描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为:10 11 12 19 16 13 28 ...

  8. BlockQueue中ArrayBlockingQueue和LinkedBlockingQueue比较

    LinkedBlockingQueue是BlockingQueue的一种使用Link List的实现,它对头和尾(取和添加操作)采用两把不同的锁,相对于ArrayBlockingQueue提高了吞吐量 ...

  9. Bootstrap基础--文本对齐风格

    在排版中离不开文本的对齐方式.在CSS中常常使用text-align来实现文本的对齐风格的设置.其中主要有四种风格: ☑  左对齐,取值left ☑  居中对齐,取值center ☑  右对齐,取值r ...

  10. 【Discuz】去除版权信息,标题栏与底部改动

    这篇文章尽管是介绍怎么把Discuz!的版权信息怎么搞得无影无踪,可是还是建议在不影响论坛视觉效果的情况下,保留Discuz的版权信息,毕竟它为我奉献了一个这么出色的开源论坛的phpproject.主 ...