在虚拟环境中使用ctypes导入dll

Import dll using ctypes in virtual environment

根据标题,我正在使用 ctypes 从 python 访问一个 .dll 文件。如果我 运行 来自正常 shell 的以下代码,一切正常:

import ctypes as ct
import os
path = '\some_path\file.dll'
print(os.path.isfile(path))
lib = ct.CDLL(path)

输出:

True

但是,如果我尝试从虚拟环境中 运行 它,相同的代码会给我输出 + 错误:

True
Traceback (most recent call last):
File ".\Test-c.py", line 4, in <module>
    lib = ct.CDLL(path)
  File "C:\Users\au684834\Miniconda3\envs\development\lib\ctypes\__init__.py", line 351, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found

四处阅读我找不到这个具体问题,有谁知道一个简单的解决方案吗?请注意,已找到该文件,因此路径可能不是问题所在。 我必须 运行 在虚拟环境中进行此操作,因为这是对更大项目的补充。

非常感谢

编辑:修改了路径以避免与 Windows 反斜杠问题混淆。我还添加了 os.path.isfile() 以显示该文件存在并且已找到。

所以,事实证明问题不是 ctypes、权限或类似的东西:问题是虚拟环境。事实上,不仅我的环境有问题,而且 miniconda 安装本身也有问题。我无法重新安装环境,也无法更新 miniconda。我通过从头开始重新安装 miniconda 并重新创建环境来解决所有问题。现在上面的代码按预期工作了。