如何檢視 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
模組的依賴關係,可以按照以下步驟操作:
- 安裝
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.dylib
、libavcodec.58.dylib
、libavutil.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