首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找Qt库位置

如何查找Qt库位置
EN

Stack Overflow用户
提问于 2017-09-23 14:17:26
回答 1查看 3.6K关注 0票数 1

导入PyQt5模块之后,使用:

代码语言:javascript
复制
from PyQt5 import QtWidgets

我可以通过以下简单的方法找到模块所在的位置:

代码语言:javascript
复制
print QtWidgets

指纹:

代码语言:javascript
复制
<module 'PyQt5.QtWidgets' from '/usr/local/lib/python2.7/site-packages/PyQt5/QtWidgets.so'>

但是,除了PyQt5模块之外,还有一个Qt库。这个Qt库是一组预编译的二进制文件,驻留在磁盘上的其他地方。它们的文件名通常在中间包含一个单词"Qt5“,例如:libQt5Core.dyliblibQt5DesignerComponents.dyliblibQt5Script.dylib

在导入PyQt5模块之后,是否有一种方法可以从Python内部获取到这个Qt库的文件路径?如何查找Python在哪里查找PyQt5模块所需的Qt库文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-23 18:29:10

libQt5Core.dylib这样的文件是在运行时动态链接的共享库。当创建一个需要这样的库的可执行文件时,编译时链接器只记录库的名称和它提供的应用程序所需的任何例程。在运行应用程序时执行动态链接是操作系统的工作。

Unix系统通常提供一个工具,可以确定可执行文件所需的依赖项,并显示它们当前位于系统上的位置。在Linux上,这个工具称为ldd (列表动态依赖项),在OSX上的等效命令是otool -L。输出如下所示:

代码语言:javascript
复制
$ ldd /usr/lib/python3.6/site-packages/PyQt5/QtCore.so
    linux-vdso.so.1 (0x00007ffd351e7000)
    libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007f1cdc1c5000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f1cdbe3e000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007f1cdba87000)
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f1cdb869000)
    ...

通过Python,您可以简单地使用subprocess模块运行适当的命令,然后解析输出以获取所需的信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46380533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档