cx_Freeze打包py文件

作者: howie6879 | 来源:发表于2016-04-17 18:57 被阅读5107次

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

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

    目录.png cxfreeze.png

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

    cxfreeze hello.py --target-dir dist
    

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

    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,如下:

    setup.py.png

    接下来只要到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,如图:

    C:\Python34\Lib\site-packages.png

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

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

    相关文章

      网友评论

      • 唤醒晨光:如果写了一个项目,里面有多个py文件,怎么一起打包成exe文件呢
      • 逸之:请教下作者,程序考到别的电脑上有没有遇到过0x000007b程序不能运行的情况?
        逸之: @howie6879 cx_freeze似乎只支持32位的Python,位数问题一般不是报应用并行设置错误之类的
        howie6879:@howie6879 可能是系统位数关系?
        howie6879:@逸之 你好 当时并没有遇到这个情况

      本文标题:cx_Freeze打包py文件

      本文链接:https://www.haomeiwen.com/subject/oobolttx.html