我目前正在尝试将一个用C编写的库与我的Python代码一起使用,但我并没有取得太大成功。我目前使用的是Windows,并且已经使用Cygwin将库(链接如下)下载、保存并安装到我的项目附近的一个目录中。
到目前为止,我不确定如何在Python代码中加载它。我遵循此链接中的说明:https://github.com/xiph/rnnoise/issues/69,但将库路径替换为相对路径,并将库保存在我的项目目录中。这是我的代码,这是返回错误
import wave
import os,sys
import ctypes
import contextlib
import numpy as np
from ctypes import util
from scipy.io import wavfile
from pydub import AudioSegment
lib_path = "rnnoise"
lib = ctypes.cdll.LoadLibrary(lib_path)以下是指令中的版本:
import wave
import os,sys
import ctypes
import contextlib
import numpy as np
from ctypes import util
from scipy.io import wavfile
from pydub import AudioSegment
lib_path = util.find_library("rnnoise")
if (not("/" in lib_path)):
lib_path = (os.popen('ldconfig -p | grep '+lib_path).read().split('\n')[0].strip().split(" ")[-1] or ("/usr/local/lib/"+lib_path))
lib = ctypes.cdll.LoadLibrary(lib_path)Traceback (most recent call last):
File "c:/Users/duyba/Documents/CET/Project/vadtest/noisetest.py", line 14, in <module>
lib = ctypes.cdll.LoadLibrary(lib_path)
File "C:\Users\duyba\anaconda3\lib\ctypes\__init__.py", line 459, in LoadLibrary
return self._dlltype(name)
File "C:\Users\duyba\anaconda3\lib\ctypes\__init__.py", line 381, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 1920] The file cannot be accessed by the system我对指令版的印象是,他们试图在Linux中定位库,所以我只是将库复制到项目文件夹中,不知道一旦找到库,他们将试图加载什么。此外,我认为一些环境路径问题可能在这里起作用,因为我在Windows中下载并安装了这个库。
库:https://github.com/xiph/rnnoise。
谢谢。
发布于 2021-09-15 21:13:24
这可能是文件访问权限错误。您可以通过创建一个新的虚拟环境或卸载并重新安装Python来绕过它;请参阅this post。
https://stackoverflow.com/questions/69199485
复制相似问题