我正在尝试使用 cx_freeze 将 pyside 应用转换为Windows上的可执行文件(.exe)。打包没有问题,但是在启动生成的.exe文件时,我收到以下错误:
ImportError:无法导入模块" PySide.QtXml"
当我尝试转换 cx_Freeze \ Samples \ PyQt4 附带的应用时,它运行没有任何问题。
在这个示例应用程序中,只有一个简单的QDialog
被调用,但在我的应用程序中,我使用 QtDesigner 进行GUI设计,并使用 PySide {加载它{1}}直接在我的py.file中:
UiLoader
setup.py
class MainWindow(QtGui.QMainWindow):
def __init__(self,parent=None):
QMainWindow.__init__(self)
loader = QUiLoader()
self.ui = loader.load('xxxx.ui',self)
QMetaObject.connectSlotsByName(self)
我认为在使用 cx_freeze 进行转换时使用from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = [], excludes = [])
import sys
from cx_Freeze import setup, Executable
from PySide import QtXml
base = 'Win32GUI' if sys.platform=='win32' else None
options = {
'build_exe': {
'includes': 'atexit'
}
}
build_exe_options = {
'includes': ['atexit'],
}
executables = [
Executable('xxx.py', base=base)
]
setup(name='xxx',
version = '0.10',
description = 'First try',
options = dict(build_exe = buildOptions),
executables = executables)
会出现问题,但我不知道如何克服此问题。
答案 0 :(得分:0)
这似乎是个老问题。我仍在回答,因为这会帮助那些正在寻找解决方案的人。
解决方案非常简单,您只需添加" PySide.QtXml"到包含列表。在此之后,您的setup.py将如下所示
build_exe_options = {
'includes': ['atexit'],
'packages': ['PySide.QtXml'],
}