【问题标题】:How to package a PySide/Phonon app under Mac OSX?如何在 Mac OSX 下打包 PySide/Phonon 应用程序?
【发布时间】:2023-03-23 18:06:01
【问题描述】:

我有一个 PySide/Phonon 应用程序(为 Windows 开发并在 Windows 上完美运行),我需要将其“移植”到 Mac OSX - 我没有任何开发经验。 如果我只运行 Python 文件,该应用程序将按预期工作 - 当我尝试使用 py2app 打包它(我需要这样做)时会出现问题。

如果我将生成的 .app 保留原样,Phonon 将无法工作,因为它无法加载所需的 phonon_backend ;如果我将插件路径添加到 qt.conf,正如各种消息来源所暗示的那样,Phonon 似乎已加载(也就是说,我不再收到相应的错误消息),但我开始收到“某某库已加载”两次,将使用一个,其中一个未定义”错误,应用程序立即崩溃。

最后,如果我尝试使用 macdeploy_qt 工具,我会收到一条“没有外部框架”的消息,结果在功能上与我不使用该工具时得到的结果相同,只是其中还有一些插件相关目录。

任何想法/指针/教程/等?顺便说一句,我在 Qt4.7 中使用 PySide1.1.1 和 Python.org python 二进制文件(否则 py2app 似乎甚至无法开始构建独立应用程序)。

【问题讨论】:

  • 好吧,既然我很高兴地翻滚,我会补充一点,我尝试使用 PyInstaller,结果相同:库加载了两次,应用程序不工作。对 qt.conf 进行再多的修改似乎也无济于事。

标签: osx-lion pyside py2app phonon


【解决方案1】:

我建议你像in this tutorial那样做。

然后您只需在主模块顶部的某处添加以下行:

QApplication.setLibraryPaths([os.path.join(os.environ['_MEIPASS2'], 'qt4_plugins'), os.environ['_MEIPASS2'] ])

对于 PyInstaller >1.5,应使用以下代码:

QApplication.setLibraryPaths([os.path.join(sys._MEIPASS, 'qt4_plugins'), sys._MEIPASS])

【讨论】:

  • 我想我的设置有所不同,因为我的环境中没有设置 _MEIPASS2 变量...一些进一步的探索使我相信问题出在我的 PATH 中:值是/Library/Frameworks/Python.framework/Versions/2.7/bin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin - 我怀疑第一点是什么搞砸了......
  • 关于 PyInstaller > 1.5 的注释,_MEIPASS2 环境变量不再存在,而是被 sys._MEIPASS 替换。
  • 我一直在寻找这个解决方案近一个星期了!惊人的! :)
猜你喜欢
  • 2013-12-26
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多