在Ubuntu 13.04上出现PySide导入错误

11

尝试仅导入时

from PySide import QtGui

我遇到了以下错误:

ImportError: libpyside-python2.7.so.1.2: 无法打开共享对象文件: 没有那个文件或目录

ls /usr/local/lib/python2.7/dist-packages/PySide/libpyside-python2.7.so.1.2

/usr/local/lib/python2.7/dist-packages/PySide/libpyside-python2.7.so.1.2

所以so文件已经在路径中,为什么PySide还是找不到它呢? 我尝试使用pip安装PySide,但是遇到了某种后处理脚本错误,并通过synaptic安装了包。

附加信息:

ldd /usr/local/lib/python2.7/dist-packages/PySide/libpyside-python2.7.so.1.2
        linux-vdso.so.1 =>  (0x00007ffffd34e000)
        libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007fdd5a6ae000)
        libshiboken-python2.7.so.1.2 => not found
        libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007fdd5a1d6000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fdd59ed3000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fdd59cbd000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdd598f4000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fdd596dd000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fdd594c0000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdd592bb000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fdd590b8000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdd58db3000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fdd58ab6000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fdd588ae000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fdd5ae32000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fdd5866e000)

ldd /usr/local/lib/python2.7/dist-packages/PySide/libpyside-python2.7.so.1.2 的输出是什么? - mata
1
请问您能否描述一下您是如何安装Pyside的?您是否使用了Pyside-setup来构建Pyside?如果是,您是否运行了“pyside_postinstall -install”命令?您是否遵循了这里的安装说明https://pypi.python.org/pypi/PySide#building-pyside-on-a-unix-system-ubuntu-12-04-lts? - rlacko
@mata 我已经更新了帖子并添加了相关信息。 - Moonwalker
@rlacko 我用pip和synaptic从仓库安装软件包遇到了问题。 - Moonwalker
默认情况下,Ubuntu 13.04 只安装了 Qt5。Pyside 需要 Qt4。您是否安装了 Qt4 包?同时尝试使用 --qmake 参数设置 qmake 的路径:python setup.py bdist_egg --qmake=/usr/bin/qmake-qt4 --version=1.2.1。请参阅此链接以获取详细信息:http://stackoverflow.com/questions/16074801/pyside-install-fails-python-2-7-4。 - rlacko
显示剩余3条评论
2个回答

18
ldd 的输出表明找不到 libshiboken-python2.7.so.1.2/usr/local/lib/python2.7/dist-packages/PySide 中有该文件,但通常动态链接器不会在这个目录中查找它。
在这种情况下,有几个选项:
- 将该目录添加到动态链接器检查的目录列表中。
要实现这一点,您可以创建一个配置文件,例如 /etc/ld.so.conf.d/pyside.conf,并将以下内容添加进去:
/usr/local/lib/python2.7/dist-packages/PySide

然后以root身份运行 ldconfig

  • 将库复制或创建符号链接到已由动态链接器检查的目录(如 /usr/local/lib),并以root身份运行ldconfig

  • 设置 LD_LIBRARY_PATH=/usr/local/lib/python2.7/dist-packages/PySide (不推荐使用)


  • pyside_postinstall脚本会更新PySide库中的RPATH,这样ldd首先会查找/usr/local/lib/python2.7/dist-packages/PySide目录下的依赖库。这就是为什么我建议您首先运行它,这样您就不必手动运行ldconfig了。 - rlacko
    你能把你做的东西发给我吗?这样我就可以修复错误并更新文档了。最好从控制台中获取构建输出。谢谢。 - rlacko

    1
    如果您使用pyside-setup从源代码构建,只需运行
    sudo python pyside_postinstall.py -install
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接