ctype 库中的 find_msvcrt 方法返回 None,因为 python 编译的 msvc 版本不同

问题描述 投票:0回答:1

我正在使用一个程序,该程序使用库 Whisper,该程序使用

ctypes
库来转录一些视频音频。我在已经配置了windows server的虚拟机中进行了测试,效果很好。我的真机和虚拟机之间的区别在于,在我的真机中我通过其网站安装了Python,而在虚拟机中我使用conda安装了Python,但我认为Python已经安装在这个虚拟机中,而且我真的不知道哪个版本我正在使用。 我无法检查,因为几周前我删除了这个虚拟机映像。

当我调试代码时,在位于

find_library()
的方法
ctypes.util
中,它检查Python编译时使用的MSVC编译器版本并返回MSVC DLL路径,Python 3.12是使用MSVC 14.3编译的,但是该方法仅支持 MSVC <= 13, then, if the version is greater, it will return a None value. I've already tried to force other versions, but it crashes in another part. When the None value is returned, the next method will allocate the MSVC DLL library to an object, but it doesn't work because my path is None value, and crash the program with the following message:

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 和这个程序:

https://github.com/ignabelitzky/easy-subber

我在Ubuntu上一个版本中进行了测试,它运行良好,但我需要运行的目标机器是Windows。

有人遇到过这个问题并解决了吗?

python windows visual-c++ ctypes whisper
1个回答
0
投票

😅
我花了一段时间,但是:

[GitHub]:ignabelitzky/easy-subber - EasySubber 取决于 [GitHub]:openai/whisper - Whisper 其中指出(强调是我的):

pip install -U openai-whisper

这是 [PyPI]:openai-whisper

相反,您有 [PyPI]:whisper(可能安装者:

pip install whisper
)。

安装正确的软件包,应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.