pyqt程序使用py2exe打包时遇到的问题

时间:2023-01-18 11:33:15
最近用pyqt写了些程序,想打包然后发布,使用py2exe时遇到了些问题。

setup.py如下:
# setup.py

from distutils.core import setup
import py2exe

setup(windows=["loadMain.py"])
#用的是GUI
python setup.py py2exe 时会报 找不到qt4 sip等 
所以还要加上 -p PyQt4,sip
这样就成功了。
问题:使用qtdesigner产生ui文件后有两种方式使用,1,手动使用继承或直接使用的方式来
添加信号,槽,和调用函数的连接;2,使用uic。
手动的就比较简单了,添加2句话就可以。uic大概是这样:
#!/usr/bin/env python
import sys,os

from PyQt4 import QtCore, QtGui, uic

from xml.etree.cElementTree import parse

class DemoImpl(QtGui.QDialog):
    def __init__(self, *args):
        QtGui.QWidget.__init__(self, *args)
        uic.loadUi("main.ui", self)
        self.exefile=""
        self.exdir="."
        self.paramList=[]
    @QtCore.pyqtSignature("")
    def on_pushButton_2_clicked(self):
        self.exefile=self.setOpenFileName()
        self.lineEdit.setText(self.exefile)

问题就出在这里了,使用uic方式时,打包的结果是可以成功的,但运行会报错。
log:
Traceback (most recent call last):
  File "uicload.py", line 4, in <module>
  File "PyQt4"uic"__init__.pyc", line 7, in <module>
  File "PyQt4"uic"Compiler"compiler.pyc", line 9, in <module>
  File "PyQt4"uic"uiparser.pyc", line 16, in <module>
ImportError: No module named elementtree.ElementTree
根据kde。org riverband,等几个地方解决方案也还是没有找到,看来这个问题得下一个版本才能
解决了。
于是回头我不用uic方式,改用继承写的,打包结果是可以使用的。
pyqt程序使用py2exe打包时遇到的问题
这是运行的实例,外观使用的plastique。打包结果会多许多没用的,比如tk,tcl包,都可以删掉的。