在MacOSX上将cx_冻结与PyQT5和Python3一起使用

在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

我正在尝试在运行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 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/