Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos cx_freeze生成从命令行运行但在单击时停止的Mac程序_Macos_Python 2.7_Pyqt4_Cx Freeze_App Bundle - Fatal编程技术网

Macos cx_freeze生成从命令行运行但在单击时停止的Mac程序

Macos cx_freeze生成从命令行运行但在单击时停止的Mac程序,macos,python-2.7,pyqt4,cx-freeze,app-bundle,Macos,Python 2.7,Pyqt4,Cx Freeze,App Bundle,我有一个python2.7/PyQt4程序,我正试图用cx\u freeze冻结它。该程序还使用请求、串行、xml.etree.ElementTree和集合。使用cxfreeze-quickstart-2.7生成的未经修改的setup.py,我可以使用macports提供的python在约塞米蒂成功构建控制台程序python setup.py build和.app python setup.py bdist_mac。如果我直接从应用程序包或dist运行程序: $ build/MacDISE-1.

我有一个python2.7/PyQt4程序,我正试图用cx\u freeze冻结它。该程序还使用请求、串行、xml.etree.ElementTree和集合。使用cxfreeze-quickstart-2.7生成的未经修改的setup.py,我可以使用macports提供的python在约塞米蒂成功构建控制台程序python setup.py build和.app python setup.py bdist_mac。如果我直接从应用程序包或dist运行程序:

$ build/MacDISE-1.0.app/Contents/MacOS/macdise
$ dist/macdise
它完全按照预期运行。如果从命令行打开:

$ open -a /Users/jeffemandel/macdise/build/MacDISE-1.0.app
我感到恐惧

LSOpenURLsWithRole() failed for the application /Users/jeffemandel/macdise/build/MacDISE-1.0.app with error -10810.
我研究了Dan McCombs distutils.util.get_platform、sys.arg提出的一些潜在问题,但这些似乎不是问题所在。通过暴力试验和错误,我发现如果我将所有代码放在一个单独的模块中,只需导入该模块而不实际调用它就会导致10810错误,因此我认为它在从命令行运行时找到了一个库,而不是从应用程序。我将dist目录放在一个thumb驱动器上,并在另一台没有安装Python、Qt4等的Mac上运行它,得到了以下结果:

packages/cx_Freeze/initscripts/Console.py", line 27, in <module> File "macdise.py", line 4, in <module>
File "ExtensionLoader_PyQt4_QtGui.py", line 11, in <module>
ImportError: dlopen(/Volumes/NO NAME/dist/PyQt4.QtGui.so, 2): Library not loaded: /opt/local/Library/Frameworks/QtGui.framework/Versions/4/QtGui
Referenced from: /Volumes/NO NAME/dist/PyQt4.QtGui.so
Reason: image not found
它运行。如果能自动将从命令行执行时生成的错误消息转储到控制台日志中,我将节省一天的时间。如果有人知道如何做到这一点,这将是一个很大的帮助

if getattr(sys, 'frozen', False):
    uiName = os.path.join(os.path.dirname(sys.executable), "tabDISE.ui" )
else:
    uiName = "tabDISE.ui"