zoukankan      html  css  js  c++  java
  • 将python3.1+pyqt4打包成exe

    将python打包成exe的程序有很多,比如py2exe、PyInstaller等等,但是到目前为止,它们对python3.1支持的都不好,所以这里我要介绍一下cx_freeze 4.2.2,它还能支持跨平台,可以在windows和linux运行。

    cx_freeze的下载网址为 http://sourceforge.net/projects/cx-freeze/files/ ,要根据已安装的python版本进行选择。比如我使用的是python3.1,所以就要下载cx_Freeze-4.2.2.win32-py3.1.msi这个文件。运行这个安装包后,相关程序就会被拷贝到python的目录下。主要在两个地方,一个是C:/Python31/Scripts,另一个是C:/Python31/Lib/site-packages/cx_Freeze

    在以前版本的cx_Freeze中,是通过FreezePython.py这个脚本将py转换为exe,而在4.2.2这个版本中,FreezePython.py已经不见了,主要的工作交给了C:/Python31/Scripts下的cxfreeze.bat来完成。

    使用cx_Freeze完成python打包exe主要有两种方法:

    第一种,直接运行cxfreeze.bat通过:

    先进入cmd命令行,进入C:/Python31/Scripts目录,然后运行cxfreeze.bat -h 就可以看到它的使用说明了。我们可以用cx_freeze自己的sample做个试验。

    进入到c:/python31/scripts/下,运行

    cxfreeze C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4/PyQt4app.py --install-dir=d:/123

    pytqt4app.py就会被打包成exe,并且它所用到的库文件,也被一并考到了d:/123目录下。

    第二种,方法,运行setup.py:

    在cxfreeze附带的例子 C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4 中,有一个setup.py文件,打开这个文件,我们发现其内容为:

    1. import sys  
    2. from cx_Freeze import setup, Executable  
    3. base = None  
    4. if sys.platform == "win32":  
    5.     base = "Win32GUI"  
    6. setup(  
    7.         name = "simple_PyQt4",  
    8.         version = "0.1",  
    9.         description = "Sample cx_Freeze PyQt4 script",  
    10.         executables = [Executable("PyQt4app.py", base = base)]) #PyQt4app.py即为要打包的文件  

    通过运行这个脚本,就可以自动的完成打包工作:

    比如,我们进入 C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4目录下,

    运行

    setup.py build

    之后,在此目录下会出现一个build/exe.win32-3.1目录,该目录下即可看到打包完成的exe文件了。我们要想对自己的脚本打包,将这个setup.py 拷贝过去,再将其中

    executables = [Executable("PyQt4app.py", base = base)])

    的PyQt4app.py改为自己的脚本名即可。

    打包过程中出现的问题:

    对中文支持的问题,如果脚本中存在中文,且编码格式没有特别指出,打包的过程中会出现: UnicodeDecodeError: 'utf8′ codec can't decode bytes in position 1602: invalid data 这类的错误,在http://www.cnblogs.com/xinzaitian/archive/2010/12/10/1902481.html这篇博文中,作者提到必须将中文删除掉。

    其实中文字符可以保留,只要在脚本文件的行首加上:

    #!/usr/bin/env python

    #coding=utf-8

    就可以了

    点击生成的exe文件是否可以使用了!很爽吧!怎么觉得启动的时候后面有个黑糊糊的窗口不舒服?那你在生成命令里面加个参数吧!加一个参数base-name设为 win32gui

    例子:
        cxfreeze hello.py --target-dir dist --base-name=win32gui

    另外的一个问题是,打包好的exe文件拿到 “桌面”或者别的中文路径下运行,就会弹出一个窗口显示cannot get zipimporter instance,这个到目前为止还没有找到好的解决方法

  • 相关阅读:
    余额宝数据架构阅读
    VS提示This function or variable may be unsafe,The POSIX name for this item is deprecated
    VS中新建QT空项目找不到头文件的问题
    指针
    循环for do while continue break,达夫设备
    GUI程序弹出控制台打印输出信息
    ctime、chrono以及所有和时间有关的内容
    python安装
    文件:fstream,FILE,CFile,filesystem,以及路径目录
    C++异常处理、Dump文件、断言、静态断言、日志文件
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468666.html
Copyright © 2011-2022 走看看