Windows上的ctypes:依赖的dll文件未找到

3 投票
1 回答
985 浏览
提问于 2025-04-16 23:41

我试着加载一个共享库 "R.dll",这个库依赖于 "Rblas.dll",而这两个文件都在同一个文件夹里。

当我用 ctypes(一个可以加载共享库的 Python 模块)来加载 R.dll 时,

import ctypes
lib = ctypes.CDLL("/path_to_r/bin/i386/R.dll")

我收到了一个错误信息,提示说找不到 "Rblas.dll"。

我该怎么办呢?我以为把这两个库放在同一个文件夹里就可以了。

1 个回答

4

你可能需要把存放dll文件的路径添加到%PATH%这个环境变量里。虽然R.DLL是通过明确的路径加载的,但它在寻找需要的RBLAS.DLL时,还是会在%PATH%中查找它的位置。因为这是Windows系统的操作,所以从Python里没有简单的方法去拦截和修改这个过程……所以必须要改变%PATH%。

另外,你也可以暂时使用os.chdir切换到你想要的目录,加载dll文件,然后在加载完成后再恢复原来的os.getcwd值。

撰写回答