Mac OS X Mavericks 上 PyQt5、Python3 和 Anaconda3 的问题

Posted

技术标签:

【中文标题】Mac OS X Mavericks 上 PyQt5、Python3 和 Anaconda3 的问题【英文标题】:Problen with PyQt5, Python3 and Anaconda3 on MacOSX Mavericks 【发布时间】:2019-01-15 13:36:51 【问题描述】:

我特别想向在 Mac OSX 上使用 Python 进行开发的人提供反馈。

我开发了一个在 GNU / Linux 和 Windows 下运行良好的应用程序(我已经使用 PyInstaller 在两个系统下创建了该应用程序的可执行文件)。

我已经虚拟化(使用 VirtualBox)一个 OSX Mavericks(更新到版本 10.9.5),因为我还想在这个系统下分发我的软件。

我安装了 Miniconda(使用 Python 3.7.1 和......其中包括模块 PyQt5 -> pyqt-5.9.2)。我为我的应用程序设置了一个虚拟环境,我可以毫无顾虑地访问(顺便说一下,Anaconda 真的很棒)。

不过,我在导入 QtGui 和 QtCore 时遇到了问题(Mac OSX 上的 QtCore 似乎存在很大问题):

    (apsc) Mac-Pro-de-angelo:apsc angelo$ python apsc_gui.py
Traceback (most recent call last):
  File "apsc_gui.py", line 11, in <module>
    from moteur_apsc.exec_pdfkit_seq_prof_gui import APSC_Sequence_Prof
  File "/Users/angelo/miniconda3/envs/apsc/moteur_apsc/exec_pdfkit_seq_prof_gui.py", line 27, in <module>
    from affichage_apsc.push_button_icone_droite import PushButtonIconeDroite
  File "/Users/angelo/miniconda3/envs/apsc/affichage_apsc/push_button_icone_droite.py", line 10, in <module>
    from PyQt5.QtCore import Qt
ImportError: dlopen(/Users/angelo/miniconda3/envs/apsc/lib/python3.7/site-packages/PyQt5/QtCore.so, 2): Symbol not found: _LSCopyDefaultApplicationURLForURL
  Referenced from: /Users/angelo/miniconda3/envs/apsc/lib/libQt5Core.5.dylib
  Expected in: /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
 in /Users/angelo/miniconda3/envs/apsc/lib/libQt5Core.5.dylib
(apsc) Mac-Pro-de-angelo:apsc angelo$

如果我只是通过终端导入QtGui,问题是一样的:

Mac-Pro-de-angelo:bin angelo$ conda activate apsc
(apsc) Mac-Pro-de-angelo:bin angelo$ python
Python 3.7.1 (default, Dec 14 2018, 13:28:58) 
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda custom (64-bit) on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt5 import QtGui
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/angelo/miniconda3/envs/apsc/lib/python3.7/site-packages/PyQt5/QtGui.so, 2): Symbol not found: _LSCopyDefaultApplicationURLForURL
  Referenced from: /Users/angelo/miniconda3/envs/apsc/lib/libQt5Core.5.dylib
  Expected in: /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
 in /Users/angelo/miniconda3/envs/apsc/lib/libQt5Core.5.dylib
>>>

你能帮我解决这个问题和/或确切地知道发生了什么吗?

提前感谢您给予我的所有帮助。

晚上好。

【问题讨论】:

【参考方案1】:

我会先检查你的LaunchServices 是否有这个符号

nm /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices | grep _LSCopyDefaultApplicationURLForURL

您是否有可能使用更新版本的 OSX 编译 QtGui?

【讨论】:

您的意思是使用 Anaconda3 更新版本的 OSX 会更好?事实上,我在 Kubuntu 14.04 中使用 VirtualBox 对 OSX 进行了虚拟化(经过一些小测试后,只有 Mavericks 版本我无法安装)。我用这个包安装了 Anaconda3:Miniconda3-latest-MacOSX-x86_64.pkg 嗯,看起来您遇到的问题与 libQt5Core.5.dylib 有关。您的系统 (10.9) 似乎不支持 Qt5:doc.qt.io/qt-5/macos.html 那我该怎么办? 您可以随时尝试使用旧版本的 Qt:doc.qt.io/archives/qt-4.8/supported-platforms.html 同时,由于我是一个固执的人,无论如何我都试图找到解决方案。事实上,Anaconda3(这真的很棒!这是我的观点)允许使用不同版本的 Python(取决于项目)安装虚拟化环境。所以我用 Python 3.4 版重新安装了我的工作环境......幸运的是 Python 3.4 (3.4.5) 在 Anaconda3 上安装了 pyqt-5.6.0、qt-5.6.2 和 sip-4.18。我可以毫无问题地开始我的软件。甚至 Spyder(Spyder3,默认安装在 Anaconda3 中)也可以工作(启动速度很慢,但无论如何我都很满意)。我真的很开心!

以上是关于Mac OS X Mavericks 上 PyQt5、Python3 和 Anaconda3 的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 PhoneGap/Cordova 为 Android 构建时,在 Mac OS X 10.9 Mavericks 上执行命令“ant”时出错

pip 在 Mac OS X Mavericks (10.9) 上引发 stdio.h not found 错误

转OS X Mavericks: 防止 Mac 进入睡眠 -- 不错

无法更新 Macports(使用 Mac OS X Mavericks)

Mavericks 上的 OS X 服务器是不是需要单独的 Mac

sh Mac OS X 10.7 / 10.8 / 10.9(Lion / Mountain Lion / Mavericks)Bootstrapping