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

    将python3.1+pyqt4打包成exe - vah101的专栏 - 博客频道 - CSDN.NET

    将python3.1+pyqt4打包成exe

    分类: python QT 3097人阅读 评论(0) 收藏 举报

    将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文件拿到 “桌面”或者别的中文路径下运行,就会弹出一个窗口显示cannot get zipimporter instance,这个到目前为止还没有找到好的解决方法

  • 相关阅读:
    查找 Linux 父进程的方法
    Flask 使用日志
    Jenkins Pipeline 编译后端 Java 代码
    K8S 指定 nfs 挂载
    K8S ingress nginx 设置访问白名单
    Jenkins Pipeline 编译前端 NodeJS 代码
    在 K8S 中测试环境中搭建 mongodb
    K8S argocd 安装配置
    搭建私有 helm 仓库 chartmuseum
    Helm templates 中的语法
  • 原文地址:https://www.cnblogs.com/lexus/p/2815102.html
Copyright © 2011-2022 走看看