当尝试在Python中使用ctypes (Windows)中基于c的库时出现OSError



我目前正在尝试使用用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:Usersduybaanaconda3libctypes__init__.py", line 459, in LoadLibrary      
return self._dlltype(name)
File "C:Usersduybaanaconda3libctypes__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.

谢谢。

这可能是文件访问权限错误。您可以通过创建一个新的虚拟环境或卸载并重新安装Python来绕过它;请看这篇文章

相关内容

  • 没有找到相关文章

最新更新