PySide / Qt 导入错误

21 投票
5 回答
12380 浏览
提问于 2025-04-19 17:39

我正在尝试在Python中导入PySide / Qt,结果遇到了以下错误:

from PySide import QtCore

ImportError: dlopen(/usr/local/lib/python2.7/site-packages/PySide/QtCore.so, 2): Library not loaded: libpyside-python2.7.1.2.dylib
  Referenced from: /usr/local/lib/python2.7/site-packages/PySide/QtCore.so
  Reason: image not found

我的运行和安装环境是:

  • Mac OSX 10.9.4 Mavericks
  • 通过Homebrew安装的Python 2.7
  • 通过Homebrew安装的Qt
  • 通过Pip安装的PySide

文件libpyside-python2.7.1.2.dylib和错误信息中提到的QtCore.so文件在同一个路径下。

我搜索了很多关于这个问题的资料,发现大多数人都是在尝试把这些库打包成一个应用,而我并不是这样。我只是想在我的系统上运行它,但却遇到了这个问题。对于应用的故障排除,有人建议使用oTool;我不确定这是否有帮助,但我运行oTool时的输出是:

otool -L QtCore.so 
QtCore.so:
    libpyside-python2.7.1.2.dylib (compatibility version 1.2.0, current version 1.2.2)
    libshiboken-python2.7.1.2.dylib (compatibility version 1.2.0, current version 1.2.2)
    /usr/local/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.6)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

有什么想法吗?提前谢谢你们 :)

5 个回答

0

我遇到过类似的问题,在Mavericks系统上使用通过Brew安装的Qt和虚拟环境。

我需要执行 brew reinstall Qt 这个命令。

然后运行 pyside_postinstall.py -install

可以参考这里: https://github.com/Homebrew/homebrew/issues/27898

1

我找到了解决办法,可以在这里查看

export DYLD_LIBRARY_PATH=/usr/local/lib/python[version]/site-packages/PySide

对于 Python 3.5,这个方法是这样的:

export DYLD_LIBRARY_PATH=/usr/local/lib/python3.5/site-packages/PySide
3

我遇到了类似的问题,最后通过手动使用 otool -L(在问题中提到的)和 install_name_tool 来更新路径,解决了这个问题。

install_name_tool -change @rpath/libshiboken.cpython-34m.1.2.dylib /usr/local/lib/python3.4/site-packages/PySide/libshiboken.cpython-34m.1.2.dylib /usr/local/lib/python3.4/site-packages/PySide/QtCore.so

install_name_tool -change @rpath/libpyside.cpython-34m.1.2.dylib /usr/local/lib/python3.4/site-packages/PySide/libpyside.cpython-34m.1.2.dylib /usr/local/lib/python3.4/site-packages/PySide/QtCore.so

在脚本能够运行之前,我需要对 PySide 目录中的几个文件进行这样的操作。

这篇博客文章是一个不错的参考:http://thecourtsofchaos.com/2013/09/16/how-to-copy-and-relink-binaries-on-osx/

13

如果你看这个,你的问题就能解决了:https://github.com/pyside/packaging/blob/master/setuptools/templates/pyside_postinstall.py

pyside_postinstall.py -install

15

好吧,这个安装程序有点问题,因为oTool的输出应该显示库的完整路径(这个路径应该通过Pyside安装程序使用install_name_tool来更改)。

与其花时间去搞清楚安装程序的哪个部分出错了,我建议你定义:

DYLD_LIBRARY_PATH=/your/path/to/pyside/libraries
export DYLD_LIBRARY_PATH

这样做会强制执行文件加载器去你提供的路径中查找库,即使这个路径没有通过链接器配置。

撰写回答