最近需要将python代码打包成exe,打包过程中出现了一些问题,特此记录,也顺便记录下cx_Freeze使用方法,留待日后查看。

首先进行下载,需要注意对应的版本号,比如本人使用python3.4,64位,故下载cx_Freeze-4.3.3.win-amd64-py3.4.msi这个版本,下载后在python安装目录下就可以看到cxfreeze,然后配置好环境变量就可以使用了,如图: tJkBP6

v0TaQN

cxfreeze有两种打包方式,一是cxfreeze script,这种方式很简单,只要打开cmdcdpython文件所在目录,比如文件名为hello.py,执行:

cxfreeze hello.py --target-dir dist

如果要生成可安装包文件,就要用到这种打包方式,名为distutils setup script,这种方式必须创建一个setup.py文件,可以使用官方提供的:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import sysfrom cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}
# GUI applications require a different base on Windows (the default is for a console application).
base = None
if sys.platform == "win32": 
    base = "Win32GUI"
setup( name = "guifoo", 
       version = "0.1", 
       description = "My GUI application!", 
       options = {"build_exe": build_exe_options}, 
       executables = [Executable("guifoo.py", base=base)]
)

或者在cmd 窗口输入cxfreeze-quickstart也可以自动生成setup.py,如下:

88QkOI

接下来只要到python文件的目录,运行

python setup.py bdist_msi

如果想更加详细了解操作方法,可以查看官方文档

官方操作文档:查看

问题

可是我在使用 cxfreeze hello.py --target-dir dist后,发现生成的exe文件无法运行,总是一闪而过,心好累,一番谷歌,找到如下解决办法: 1、去这个网站下载cx_Freeze(注意32/64位) cx_Freeze‑4.3.4‑cp34‑none‑win64.whl 2、把扩展名whl,改为zip进行解压 4、然后进入C:\Python34\Lib\site-packages,请参考各自python安装路径,删除cx_Freeze相关的包,我这里有两个,全部都删除掉 5、然后将cx_Freeze‑4.3.4‑cp34‑none‑win64目录下的文件夹全部复制到C:\Python34\Lib\site-packages,如图:

9TiL5v

最后进行打包,cxfreeze hello.py --target-dir dist,终于可以运行了,如果想打包成一个exe文件的话,可以将dist文件夹下面的文件全部创建自解压文件,不会的看这里

这样就解决了,希望能有帮助。