如何查看 pyav 依赖的动态链接库

linux 下的方案

在 Python 中查看 pyav 依赖的动态链接库,可以使用 ldd 命令。ldd 命令可以列出一个可执行文件或者共享库依赖的共享库列表。使用下面的命令可以查看 pyav 依赖的动态链接库:

ldd $(python -c "import av; print(av.__file__)")

这个命令会在终端中输出 pyav 依赖的所有共享库。如果系统中没有安装 ldd 命令,可以通过安装 libc6-dev 包来安装该命令。在 Ubuntu 和 Debian 系统中可以使用下面的命令来安装:

sudo apt-get install libc6-dev

mac 下的方案

在 macOS 上,可以使用 otool 命令来查看一个二进制文件的动态链接库依赖关系。对于 Python 模块,可以先找到对应的 .so 文件,然后使用 otool -L 命令来查看依赖关系。

例如,假设我们要查看 pyav 模块的依赖关系,可以按照以下步骤操作:

  1. 安装 pyav 模块:
pip install av

找到 av 模块的 .so 文件路径:

$ python -c "import av; print(av.__file__)"
/path/to/site-packages/av/__init__.pyc

其中,/path/to/site-packages 是你的 Python 环境的第三方库路径。

使用 otool -L 命令查看依赖关系:

$ otool -L /path/to/site-packages/av/.dylibs/av.so
/path/to/site-packages/av/.dylibs/av.so:
        /usr/local/opt/ffmpeg/lib/libavformat.58.dylib (compatibility version 58.0.0, current version 58.54.100)
        /usr/local/opt/ffmpeg/lib/libavcodec.58.dylib (compatibility version 58.0.0, current version 58.91.100)
        /usr/local/opt/ffmpeg/lib/libavutil.56.dylib (compatibility version 56.0.0, current version 56.70.100)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)

这里可以看到 av.so 依赖于 libavformat.58.dyliblibavcodec.58.dyliblibavutil.56.dylib 以及系统库 libSystem.B.dylib

实操

╰─➤  fd -u av   
.dylibs/libavcodec.59.37.100.dylib
.dylibs/libavdevice.59.7.100.dylib
.dylibs/libavfilter.8.44.100.dylib
.dylibs/libavformat.59.27.100.dylib
.dylibs/libavutil.57.28.100.dylib
.dylibs/libdav1d.5.dylib

可以看到,pyav 使用了如下的 ffmpeg 动态链接库:

  • libavcodec
  • libavdevice
  • libavfilter
  • libavformat
  • libavutil
  • libdav1d

universe_king
3.4k 声望680 粉丝