【问题标题】:Import dll using ctypes in virtual environment在虚拟环境中使用 ctypes 导入 dll
【发布时间】:2021-08-13 10:14:22
【问题描述】:

根据标题,我使用 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() 以表明该文件存在并且已找到。

【问题讨论】:

  • 检查this
  • 谢谢,但我已经解决了这个问题,我认为不是问题
  • 你的问题似乎很糟糕。试试:print(len("\f")).
  • 我现在表达的问题更清楚了吗?

标签: python dll ctypes


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    相关资源
    最近更新 更多