您的位置:首页 > 编程语言 > Python开发

python打包exe程序

2015-02-25 14:32 127 查看

一、py2exe方法打包

1.安装py2exe

2.编写setup.py代码如下:

#-*-coding: UTF-8-*-
from distutils.core import setup
import py2exe
# Powered by ***
INCLUDES = []
options = {"py2exe" :
{"compressed" : 1,
"optimize" : 2,
"bundle_files" : 2,
"includes" : INCLUDES,
"dll_excludes": [ "MSVCP90.dll", "mswsock.dll", "powrprof.dll","w9xpopen.exe"] }}
setup(
options = options,
description = "my py2exe",
zipfile=None,
console=[{"script": "park.py", "icon_resources": [(1, "logo.ico")] }],
)


具体的option和其它的选项是什么含意可以search一下,网上非常多的资料,我就不赘述了

下一步,运行命令:

python setup.py py2exe


编译完成后会在当前目录下生成一个dist目录,里面有park.exe文件,不过执行时并不成功

出现如下错误:

1 Traceback (most recent call last):
2   File "park.py", line 4, in <module>
3   File "zipextimporter.pyo", line 82, in load_module
4   File "pyquery.pyo", line 9, in <module>
5   File "zipextimporter.pyo", line 82, in load_module
6   File "cssselectpatch.pyo", line 6, in <module>
7   File "zipextimporter.pyo", line 82, in load_module
8   File "lxml\cssselect.pyo", line 8, in <module>
9   File "zipextimporter.pyo", line 98, in load_module
10   File "lxml.etree.pyx", line 72, in init lxml.etree (src/lxml/lxml.etree.c:156121)
11 ImportError: No module named _elementpath


在网上找了下解决方案,问题出在了lxml库。

不能正确找到路径,因为是lxml第三方库,要多加一条指令指定路径;将编译命令改为
python setup.py py2exe -p lxml,gzip


这里还多加了gzip,原因同lxml一样

最后执行生成的文件有park.exe和python27.dll,只要把这两个文件放到一个文件夹,然后就可以在任何一台电脑上运行啦。

二、cxFreeze+python命令打包

1. 安装cxFreeze

2. 在python的安装目录下,找到cxfreeze.bat文件(我的安装路径是 C:\Python34\Scripts\cxfreeze.bat).

修改文件内容中的路径为自己本机python的安装路径,保存退出。

3.打包

cd进入python安装目录的Scripts目录下,执行打包命令

cd C:\Python34\Scripts
cxFreeze appName.py --target-dir dirName --base-name=Win32GUI


解释一下:

cxFreeze appName.py 是要打包的目标python文件appName.py是要打包的目标python文件

--target-dir dirName 是在当前路径下创建一个名为dirName的文件夹,打包后的exe文件位于该文件夹下

--base-name=Win32GUI 是指创建出来的exe是基于win32平台的GUI程序(如果源py文件是图形化界面应用,则生成exe运行时没有附加的cmd黑框框控制台)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: