用py2exe打包Python3.x应用
能把python文件打包成.exe可执行文件的东西,据我所知有三个
,Pyinstaller ,py2exe,cx_freeze和。据网上的评价是py2exe和Pyinstaller比较好用,尤其是Pyinstaller似乎更好用一点。后两个已经支持python3.x,后者目前(2015-09-03)还不支持。我只用过py2exe,感觉很好用很强大,以下表格内容部分来自网络。
大家的评价
打包成单独一个exe文件
支持python3.x
py2exe
比较简单易用
√
√
Pyinstaller
最强大(windows,Linux都能用,较简单)
√
×
cx_freeze
比较麻烦
×
√
py2exe其实已经支持python3.x了,可能很多人还不知道,以下是目前最新版本的下载地址(2014-10-21版)。 https://pypi.python.org/pypi/py2exe/0.9.2.2 py2exe for Python 2 在以下网址还可以下到,但好像好久没更新了 http://sourceforge.net/project/showfiles.php?group_id=15583
我的想法是写好一个脚本,以后要用的时候直接套用就可以了,在pythoner 中找到一个很好的例子,以后可以就用这个脚本了,而且用Qt写的应用也能打包,真的很方便,就是图标暂时还不能正常显示,以后研究一下。
1
'''
2
转自Pythoner, 把脚本和要打包的文件放到同一个文件夹,双击该脚本即可
3
更多信息请见
4
http://www.pythoner.com/111.html
5
http://www.py2exe.org/index.cgi/FrontPage
6
https://pypi.python.org/pypi/py2exe/0..2.2
7
在以后用到更多模块时需要添加更多东西
8
http://www.py2exe.org/index.cgi/WorkingWithVariousPackag esAndModules
9
'''
10
from
distutils.core
import
setup
11
import
py2exe
12
import
sys
13
14
#
this allows to run itwith a simple double click.
15
sys.argv.append
(
'
py2exe
'
)
16
17
py2exe_options
=
{
18
"
includes
"
:
[
"
sip
"
]
,
#
如果是Qt应用要加上这一行,如果不是则不需要
19
"
dll_excludes
"
:
[
"
MSVCP90.dll
"
,
]
,
20
"
compressed
"
:
1
,
#
1--压缩文件
21
"
optimize
"
:
2
,
22
"
ascii
"
:
0
,
23
"
bundle_files
"
:
0
,
}
24
25
setup
(
26
name
=
'
PyQtDemo
'
,
27
version
=
'
1.0
'
,
28
windows
=
[
{
'
script
'
:
'
F inal.py
'
,
#
此处改为要打包的脚本
29
#
'icon_resouces':[(0,'sss.ico')] #如果包含图标'''
30
}
]
,
31
zipfile
=
None
,
32
options
=
{
'
py2exe
'
:
py2exe_options
}
33
)
参数解释
py2exe_options
includes: 如果是PyQt应用,加上["sip"] dll_excludes: 需要排除的dll文件,”MSVCP90.dll”不排除的话会error: MSVCP90.dll: No such file ordirectory optimize: 0 - don’toptimize (generate .pyc) 1 - normaloptimization (like python -O) 2 - extraoptimization (like python -OO) bundle_files: 3 - createscript.exe, python.dll, extensions.pyd, others.dll. 2 - createscript.exe, python.dll, others.dll. 1 - createscript.exe, others.dll. 0 - createscript.exe.
setup
若是控制台应用,用"console=" 若是GUI应用,用"windows=" zipfile: 默认会在dist目录里生成一个zip压缩包 None -不生成zip压缩包,zip压缩包直接包含在exe文件里
Python3.x版py2exe应该更加强大,更加方便。主要体现在 1.原文为“The C-runtime library for Python 3 does NOT need a windowsmanifest any longer to load correctly (this is a feature of Python,not of py2exe)”由于电脑和英语水平有限,不知道这是否意味着不需要添加那些烦人的C runtimeDLL文件了。反正我编了一个东西,没有手动添加任何dll文件,生成的可执行文件在别人的电脑上正常运行。 2.能自动寻找一些库,而不需要手动添加(不是所有的库都可以) 3.不生成临时的build目录 4.除了写一个setup.py外,还可以直接在命令行直接用一条命令生成exe文件。参见下载地址后面的说明。