python - 在虚拟环境中使用 ctypes 导入 dll
问题描述
根据标题,我使用 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 并重新创建环境来解决所有问题。现在上面的代码按预期工作。
推荐阅读
- android - 在装有 Android 8.0 的三星设备上在 RTL 中格式化“%d - %d”时出现错误
- python - Python virtualenv 需要和它所属的项目在同一个地方创建?
- python - 防止 FileExistsError 的功能
- c++ - 为什么这段代码只识别文本文件中的第一行?输入任何大于 1 的数字都会返回“未找到原子序数”
- eclipse - Spring Tool Suite:@Configuration 类可能不是最终的。删除 final 修饰符以继续
- python - 圆球弹跳的角度反射
- javascript - undefined 不是对象(评估 '_this3.props.navigation.navigate')
- jquery - 无法在 javascript 中将事件绑定到 datetimepicker
- dashboard - django oscar - 仪表板/凭证
- html - 图标不与 fontAwsome 一起显示