#4582 有没有大哥知道这是什么问题

150.241* Posted at: 6 hours ago 👁17

Traceback (most recent call last):
File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/.venv/lib/python3.10/site-packages/soundfile.py", line 267, in

_snd = _ffi.dlopen('sndfile')

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/.venv/lib/python3.10/site-packages/cffi/api.py", line 150, in dlopen

lib, function_cache = _make_ffi_library(self, name, flags)

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/.venv/lib/python3.10/site-packages/cffi/api.py", line 834, in _make_ffi_library

backendlib = _load_backend_lib(backend, libname, flags)

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/.venv/lib/python3.10/site-packages/cffi/api.py", line 829, in _load_backend_lib

raise OSError(msg)

OSError: ctypes.util.find_library() did not manage to locate a library called 'sndfile'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/videotrans/mainwin/_main_win.py", line 479, in _set_default

self._bind_signal()

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/videotrans/mainwin/_main_win.py", line 673, in _bind_signal

self._open_winform('fn_peiyin')

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/videotrans/mainwin/_main_win.py", line 750, in _open_winform

return winform.get_win(name).openwin()

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/videotrans/winform/fn_peiyin.py", line 187, in openwin

from videotrans.task._dubbing import DubbingSrt

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/videotrans/task/_dubbing.py", line 13, in

from videotrans.task._rate import TtsSpeedRate

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/videotrans/task/_rate.py", line 75, in

import soundfile as sf

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/.venv/lib/python3.10/site-packages/soundfile.py", line 276, in

_snd = _ffi.dlopen(_os.path.join(

File "/Users/yunchuang/Desktop/prv/pyvideotrans-main/.venv/lib/python3.10/site-packages/cffi/api.py", line 150, in dlopen

lib, function_cache = _make_ffi_library(self, name, flags)

3 Replies

这是由于缺少 libsndfile 库导致的,该库是 soundfile Python 包的底层依赖。

  1. 使用 Homebrew 安装 libsndfile:
    brew install libsndfile
  2. 重新启动软件即可。

试过了还是同样的报错

这通常是因为 Homebrew 安装的 libsndfile 库路径未被 Python 加载。请在终端中执行以下步骤:

  1. 确认 libsndfile 已安装

    brew list libsndfile

    若已安装,会显示路径(如 /opt/homebrew/lib/libsndfile.1.dylib)。

  2. 重新安装 soundfile 包(确保链接正确):

    cd /Users/yunchuang/Desktop/prv/pyvideotrans-main
    .venv/bin/pip uninstall soundfile -y
    .venv/bin/pip install soundfile --no-cache-dir
  3. 设置动态库路径(若仍未解决):

    export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH
    .venv/bin/python sp.py

    如果 Homebrew 安装在 /usr/local 则使用 /usr/local/lib

  4. 若使用 conda(可选,更稳定):

    conda install -c conda-forge libsndfile

    然后在虚拟环境中 pip install soundfile

完成上述操作后重启软件即可。如果仍失败,请提供 brew list libsndfile 的输出和 which sp.py 所在目录下的 logs/ 最新日志底部 30 行。

Post Your Reply
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update.

Related resource