PySide“hello world”:py2exe / pyinstaller / cx_freeze和访问冲突

时间:2012-09-12 10:34:36

标签: python py2exe pyside pyinstaller cx-freeze

我正在尝试使用PySide构建一个非常基本的可执行文件(Windows)。以下脚本在解释器(Python 2.7,PySide 1.1.2)

中正常运行
#!/usr/bin/python

import sys

sys.stdout = open("my_stdout.log", "w")
sys.stderr = open("my_stderr.log", "w")

import PySide.QtGui
from PySide.QtGui import QApplication
from PySide.QtGui import QMessageBox


# Create the application object
app = QApplication(sys.argv)

# Create a simple dialog box
msgBox = QMessageBox()
msgBox.setText("Hello World - using PySide version " + PySide.__version__)
msgBox.exec_()

我尝试了3种方法(py2exe,pyinstaller和cx_freeze),并且所有3个生成的可执行文件都无法执行。出现了两个stdout / stderr文件,所以我发现第一个PySide导入使一切都失败了。 (未处理的异常/访问冲突)

我使用depends(http://www.dependencywalker.com/)分析了可执行文件,所有内容看起来都正确链接。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您需要将atexit模块添加为include。来源:http://qt-project.org/wiki/Packaging_PySide_applications_on_Windows

(Linux btw也是如此)

答案 1 :(得分:1)

感谢您的帮助。实际上,这并没有改变任何东西:/但是,我找到了解决我的问题的方法:如果我添加from PySide import QtCore, QtGui,那么可执行文件(使用pyinstaller)确实有效!