Python 3.12中ctypes.util.find_library()因MSVC版本不兼容返回None导致whisper库崩溃的问题求助
Python 3.12中ctypes.util.find_library()因MSVC版本不兼容返回None导致whisper库崩溃的问题求助
我最近在做视频音频转写的项目,用到了whisper库,而这个库依赖ctypes。之前在配置好的Windows Server虚拟机上测试完全没问题,但换到我的实体Windows 10机器上就崩了。
仔细对比了两台机器的差异:实体机是从Python官网装的Python 3.12,虚拟机当时用conda装的Python(不过后来我删掉了虚拟机镜像,没法确认具体版本了)。
调试的时候发现问题出在ctypes.util里的find_library()方法——这个方法会检查Python编译时用的MSVC版本,然后返回对应的MSVC DLL路径。但Python 3.12是用MSVC 14.3编译的,而这个方法只支持MSVC版本<=13,所以直接返回了None。我试过强制指定其他版本,但程序又在别的地方崩溃了。
当find_library()返回None后,后续代码尝试把MSVC DLL库分配给对象时就炸了,报错信息如下:
C:/Python312/python.exe e:/Repositories/easy-subber/main.py Traceback (most recent call last): File "e:\Repositories\easy-subber\main.py", line 7, in <module> from transcription import transcribe_audio File "e:\Repositories\easy-subber\transcription.py", line 1, in <module> import whisper File "C:\Python312\Lib\site-packages\whisper.py", line 69, in <module> libc = ctypes.CDLL(libc_name) ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\ctypes\__init__.py", line 369, in __init__ if '/' in name or '\\' in name: ^^^^^^^^^^^ TypeError: argument of type 'NoneType' is not iterable
我用的是Windows 10、Python 3.12,项目是easy-subber。另外我在最新版Ubuntu上测试过,运行完全正常,但我必须在Windows环境下运行这个程序。
有没有大佬遇到过这个问题并解决了?求指点!
备注:内容来源于stack exchange,提问作者Morvy
相关产品推荐
相关产品推荐

