在MacOSX上将cx_冻结与PyQT5和Python3一起使用
我正在尝试在运行10.9.2的MacOS上使用cx_freeze 4.3.3,该MacOS使用非常简单的PyQt5脚本和Python 3.3 不会返回任何错误,并且会输出.app。但是,当从终端运行.app时,我会获得以下错误:在MacOSX上将cx_冻结与PyQT5和Python3一起使用,macos,python-3.x,cx-freeze,pyqt5,Macos,Python 3.x,Cx Freeze,Pyqt5,我正在尝试在运行10.9.2的MacOS上使用cx_freeze 4.3.3,该MacOS使用非常简单的PyQt5脚本和Python 3.3 不会返回任何错误,并且会输出.app。但是,当从终端运行.app时,我会获得以下错误: LSOpenURLsWithRole() failed with error -10810 根据苹果的文档,这是一个“未知错误” 我尝试运行的非常简单的代码(PyQt5app.py)是: setup.py文件是: import sys from cx_Freeze i
LSOpenURLsWithRole() failed with error -10810
根据苹果的文档,这是一个“未知错误”
我尝试运行的非常简单的代码(PyQt5app.py)是:
setup.py文件是:
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
options = {
'build_exe': {
'excludes': ['Tkinter'] # Sometimes a little finetuning is needed
}
}
executables = [
Executable('PyQt5app.py', base=base)
]
setup(name='PyQt5app',
version='0.1',
description='Sample PyQt5 GUI',
executables=executables,
options=options
)
跑步时,我会打电话:
sudo python cx_freeze bdist_mac
获取此日志:
上面的应用程序返回错误
因此,仔细阅读,我发现可能与在应用程序中包含qt文件有关(或者至少这是PyQt4上的问题),因此我尝试指定qt菜单nib目录:
sudo python setup.py bdist_mac --qt-menu-nib=/Users/franco/Qt5.2.1/5.2.1/clang_64/plugins/platforms/
获取此日志:
同样的不工作错误
如果我从PyQt5app.app/Contents/MacOS/PyQt5app运行应用程序,我会得到很多引导错误:
Traceback (most recent call last):
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/cx_Freeze-4.3.3-py3.3-macosx-10.9-x86_64.egg/cx_Freeze/initscripts/Console.py", line 27, in <module>
exec(code, m.__dict__)
File "PyQt5app.py", line 5, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 1565, in _find_and_load
return _find_and_load_unlocked(name, import_)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 1532, in _find_and_load_unlocked
loader.load_module(name)
File "ExtensionLoader_PyQt5_QtWidgets.py", line 22, in <module>
File "ExtensionLoader_PyQt5_QtWidgets.py", line 14, in __bootstrap__
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 1565, in _find_and_load
return _find_and_load_unlocked(name, import_)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 1532, in _find_and_load_unlocked
loader.load_module(name)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 584, in _check_name_wrapper
return method(self, name, *args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 495, in set_package_wrapper
module = fxn(*args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 508, in set_loader_wrapper
module = fxn(self, *args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 1132, in load_module
fullname, self.path)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/_bootstrap.py", line 313, in _call_with_frames_removed
return f(*args, **kwds)
SystemError: initialization of sip raised unreported exception
我肯定做错了什么,所以请有人能帮我吗?那么,经过长期的斗争,现在的问题是:libzmq。 我安装了libzmq并指定了--qt菜单nib选项,上面的简单示例在这两种情况下运行:
sudo python setup.py build
及
逐步说明:
我的大多数python33软件包都使用了mac端口,所以剩下的部分我都坚持使用它。
Libzmq在macports上不可用,但其依赖项不可用。
因此:
1) 安装libtool、autoconf、automake:
sudo port install libtool
sudo port install autoconf
sudo port install automake
2) 从中获取最新版本的libzmq(为了订购,我下载了ZIP),然后解压缩/导航到该文件夹
/libzmq-master
现在,文件夹中的安装文档中提供的说明非常清楚,如果您安装了所有依赖项,那么就可以了。
运行:
3) 从下载最新的cx\U冻结,然后解压缩/卸载导航到文件夹并运行:
sudo python setup.py build
sudo python setup.py install
现在,为使用Python3.3和PyQt5的MacOSX编译代码时,您可以运行:
sudo python setup.py build
然后在“生成”文件夹中导航并按以下方式运行程序:
./nameoftheprogram
一旦您确定这项工作正常,然后使用以下工具构建应用程序或dmg(根据您的喜好):
其中路径是Qt5安装的路径。如果我不使用--qt菜单nib选项,应用程序会在启动时崩溃,而构建工作正常
希望这将对将来的人有所帮助。我遇到了同样的错误,用最新版本的ZMQ(4.0.4)重新编译并没有解决这个问题 但是,通过查看
/Applications/Utilities/Console.app
程序的消息,我可以看到Python程序有一个额外的命令行选项。此命令行选项始终以-psn\u 0\u
开头,后跟一个数字。显然,psn代表过程序列号(参见:)
我的程序使用
argparse
包来解析命令行参数,并因无法识别-psn选项而退出。我现在在用argparse
解析之前过滤掉它,这就解决了我的问题。Hi HeoN这听起来像是我正在寻找的一步一步的方法,但是对不起,我是这方面的初学者,你能不能通过Twitter联系我,因为我遇到了麻烦,或者你可以分享另一个更详细的教程?我是推特上的@Lexynux,我保证不会太多地拍你马屁。谢谢所有这些信息,我现在就去试试!
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install
sudo python setup.py build
sudo python setup.py install
sudo python setup.py build
./nameoftheprogram
sudo python setup.py bdist_mac --qt-menu-nib=/Users/username/Qt5.2.1/5.2.1/clang_64/plugins/platforms/