无法在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”文件之外的子模块吗?