欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python两种打包方式--py2exe和pyinstaller

程序员文章站 2024-02-03 22:27:46
...
http://blog.sina.com.cn/s/blog_a60b1c3c0102xqix.html


环境说明:python2.7.13 win10专业版64位

py2exe
1.安装
相对于pyinstaller来说,py2exe不需要依赖pywin32,可以直接使用。
先去官网下载对应版本的py2exe(https://sourceforge.net/projects/py2exe/files/) 或者下载百度云保存的(提取密码:h4s9),然后运行安装即可。

2.使用说明
1)先找到自己写好的Python文件路径
python两种打包方式--py2exe和pyinstaller

2)然后在该路径下添加一个设置脚本setup.py(名字随便取),示例如下(别忘了加上import py2exe):

from distutils.core import setup 
import py2exe
setup(console=["qrtest.py"]) 

python两种打包方式--py2exe和pyinstaller

((高级部分,其实也不高级,高级选项说明:

      看那个编译脚本中的这句:setup(console=["HelloPy2exe.py"]),setup还支持很多参数,windows(一个windows界面程序),data_filse(打包其他的文件)……以后再说说。

      看一个例子先:

[python] view plain copy
  1. # -*- coding: cp936 -*-  
  2. from distutils.core import setup  
  3. import py2exe  
  4.   
  5. includes = ["encodings""encodings.*"]  
  6.   
  7. options = {"py2exe":    
  8.             {"compressed"1#压缩    
  9.              "optimize"2,    
  10.              "ascii"1,    
  11.              "includes":includes,    
  12.              "bundle_files"1 #所有文件打包成一个exe文件  
  13.             }}  
  14. setup(  
  15.     options=options,    
  16.     zipfile=None,  
  17.     console=[{"script""HelloPy2exe.py""icon_resources": [(1"pc.ico")]}],  
  18.     windows=[{"script""HelloWin.py""icon_resources": [(1"pc.ico")]}],  
  19.     data_files=[("magic",["App_x86.exe",]),],  
  20.     version = "2010.11.01.01",   
  21.     description = "this is a py2exe test",   
  22.     name = "HelloGuys.",   
  23. )  

      options可以用来指定一些编译的参数,譬如是否压缩,是否打包为一个文件,data_files是一个打包时的拷贝文件列表,格式如下:data_files=[("目的文件夹",["文件名",]), ("目的文件夹",["文件名",]), ("目的文件夹",["文件名",]),],至于version,description,name等等,你们懂的,icon_resources是指定一个ico图标作为程序的图标。从这里也可以看出windows,console等参数是可以指定一个list来设置参数的。可以去Python安装目录/Lib/site-packages/py2exe/samples下看一些例子,这玩意还可以打包服务程序,com服务器程序等等。))




3)设置好以后,就可以进行编译了,在当前目录下按住shift再点击右键,选择“在此处打开命令窗口”。输入:python setup.py py2exe
python两种打包方式--py2exe和pyinstaller

4)等待上面的代码执行过后,在当前目录下的dist文件夹里面就有了qrtest.exe的可执行文件。
python两种打包方式--py2exe和pyinstaller
python两种打包方式--py2exe和pyinstaller


4)至此,就已经完成了打包成exe的目的了。







ps:最后想说的话。对于pyinstaller和py2exe两种把Python文件打包成exe的可执行文件的方法,都有各自的优缺点。但是最终目的都是为了在没有Python环境下的普通 Windows系统的电脑中可直接运行,这点还是很不错的。我本人比较偏向于pyinstaller,它(-F指令下)生成的exe文件,集成了所需要的所有资源(所以exe文件 相对较大),可直接拷贝到其他电脑中使用。对于py2exe来说,限制就比较多了,它所需要用到的外部资源都在dist目录下,想要在其他电脑中使用就必须把整个dist文件夹都拷贝过去。而且经测试在64位机器生成的exe无法再32位机器上打开使用。
大家根据自己的需要,择优选择就行了。


========================================================
环境说明:Python2.7.13 win10专业版64位
pyinstaller
1.使用前的准备
先下载好对应的pyinstaller的安装包
(官网:https://sourceforge.net/projects/pyinstaller/files/
对pyinstaller的源码感兴趣的,这里也有:
pyinstaller的源码地址:https://github.com/pyinstaller/pyinstaller

然后在Windows下还需要pywin32的支持,大家先去下自己对应的版本
(官网:http://sourceforge.net/projects/pywin32/

嫌麻烦的,我这里有两个安装包的mirror(提取密码:y8fq)
python两种打包方式--py2exe和pyinstaller

2.安装
将下载好的pywin32-218.win-amd64-py2.7.exe双击安装,电脑会自动查找Python27的路径,我这里是64位的py2.7。
然后再将下载好的pyinstaller-2.0.zip解压到D盘(解压到其他地方也行)

3.转换
配置好环境后,我们就可以进行最激动人心的一步了!
1)将你写好的Python文件放到解压好的pyinstaller的目录下
python两种打包方式--py2exe和pyinstaller

2)然后按住shift键,再点右键,选择“在此处打开命令窗口”
3)输入:python pyinstaller.py -F test.py
python两种打包方式--py2exe和pyinstaller

注:-F表示生成单个可执行文件,test.py是你已经写好的Python文件
参数说明:
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口
-p 表示你自己自定义需要加载的类路径
-i 表示可执行文件的图标
-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件
-c, –console, –nowindowed 使用控制台,*面

添加icon图标

python pyinstaller.py -i 1.ico -F hello.py

后记:

1.程序设置自定义图标:python pyinstaller.py -F -i ico_path  py_path 

首先需要下载一张正常的ico,不能用直接修改后缀的。

下载图片:    https://www.easyicon.net

图片改为ico:  http://www.ico.la/

输入命令 python pyinstaller.py -F -i demo.ico main.py

2.报错提示:

python pyinstaller -F -i demo.ico main.py 命令格式一定是先图标路径,再程序路径。

路径最好为英文,没有中文字符;脚本名称里没有特殊字符如 .

使用utf8编码

图标文件必须是正常格式,不能直接更改后缀。

tuble index out of range ---》pyinstaller版本尚未支持python的版本

3.窗口程序

使用 pyinstaller -F -w  -i ico_path  py_path ,这样脚本不会弹出命令窗,前提是用了GUI库. 

4.导入模块问题

pyinstaller -F -w  -i  --hidden-import queue ico_path  py_path 加上选项

1
 
Keep going



4)然后等待它编译,编译完成后,在根目录下的test/dist里面就有已经打包好的exe文件,直接拷贝出来就可以使用了。
python两种打包方式--py2exe和pyinstaller

python两种打包方式--py2exe和pyinstaller

python两种打包方式--py2exe和pyinstaller

5)如果大家的程序打开闪一下就关闭了,就在你们写好的Python程序的最后加上一句raw_input(),就可以实现程序运行结束后窗口暂停,直到你输入回车键
6)就这样就可以将python文件打包成方便使用的exe文件了



ps:还有一种更简单的安装pyinstaller的方法:
直接在cmd命令窗口下输入:pip install pyinstaller 即可,
然后在转换成exe的时候,只需要在写好的python文件目录下输入:pyinstaller -F test.py 即可