无法在macosx中导入pyqt4的子模块

Posted

技术标签:

【中文标题】无法在macosx中导入pyqt4的子模块【英文标题】:cannot import submodules of pyqt4 in macosx 【发布时间】:2015-10-11 21:32:30 【问题描述】:

当我尝试在 python 2.7.9 上的 macosx 10.10 中导入 pyqt4 的子模块时出现以下错误:

$ python -c "from PyQt4 import QtCore"

ImportError: dlopen(/Users/Desktop/lib/python2.7/
site-packages/PyQt4/QtCore.so, 2): Library not loaded: @rpath/QtCore.framework/Versions/5/QtCore

Referenced from: /Users/Desktop/lib/python2.7/
site-packages/PyQt4/QtCore.so
Reason: image not found

我从以下位置安装 pyqt4:

https://riverbankcomputing.com/software/pyqt/download

PyQt-mac-gpl-4.11.4.tar.gz MacOS/X 源码

cd PyQt-mac-gpl-4.11.4 python configure-ng.py --destdir=/Users/Desktop/lib/python2.7/site-packages --sip-incdir=/Users/Desktop/include 制作 进行安装

我有一个 64 位 python 2.7.9,我使用在线安装程序安装了 qt。我没有从源代码编译它,因为这会占用大量内存。

我使用以下方式安装了 qt:

qt-unified-mac-x64-2.0.2-2-online.dmg,这是一个 64 位的 qt。

我注意到 pyqt4 创建的每个 .so 文件都引用了一些不再存在的 dylib。例如,QtGui.so 引用 libQtGui.dylib, QtWidgets.so 指的是 libQtWidgets.dylib,等等。每个 PyQt4 Qt.so 应该有一个匹配的 libQt.dylib,它出现了。

有人知道我该如何解决这个问题吗?

谢谢!

【问题讨论】:

LD_LIBRARY_PATH 和/或 DYLD_LIBRARY_PATH 和 PYTHONPATH 都设置正确,但不能解决问题。 【参考方案1】:

我通过卸载 qt5.5 并安装 qt-opensource-mac-4.8.6-1.dmg 解决了这个问题。安装完成后,只需重新编译pyqt4并进行安装即可。如下

python configure.py -q /usr/bin/qmake-4.8 -d /Library/Python/2.7/site-packages/ --sip /Library/Frameworks/Python.framework/Versions/2.7/bin/sip 

make

make install

【讨论】:

【参考方案2】:

我通过确保为同一架构安装 sip 和 pyqt4 解决了这个问题。

具体来说,我安装了带有arch标志的sip,这是我以前没有做过的。

python configure.py -d /somefolder/lib/python2.7/site-packages -e /somefolder/lib/python2.7/site-packages -p darwin-g++ --arch x86_64

然后make make install。

后来我安装了pyqt4

python configure.py --destdir=/somefolder/lib/python2.7/site-packages --use-arch= x86_64 制作 进行安装

这似乎解决了我的问题,我可以毫无错误地导入 pyqt4 子模块。

【讨论】:

以上是关于无法在macosx中导入pyqt4的子模块的主要内容,如果未能解决你的问题,请参考以下文章

我可以从本地纱线工作区依赖包中导入“main”:“index.js”文件之外的子模块吗?

pom.xml导入子模块失败

如何在包中只导入没有 exec __init__.py 的子模块

无法在 .tsx 文件中导入 CSS 模块

如何构建 Python C 扩展,以便我可以从模块中导入它

为啥 VS Code 无法在我的程序中导入 timeit 模块?