【问题标题】:Python 3.8 not loading C dllPython 3.8 未加载 C dll
【发布时间】:2020-03-03 14:12:32
【问题描述】:

升级到 Python 3.8.1 后,我的工作代码中断了。以下行以前可以工作,但现在返回错误消息:

cdll.LoadLibrary('mydllpath/mydll.dll')
==> Could not find module 'mydll.dll'. Try using the full path with constructor syntax.

有人建议将 dll 文件夹添加到 dll 搜索路径。于是我把代码改成了:

    os.chdir('mydllpath')
    print(os.listdir())  # Proof of success
    os.add_dll_directory('mydllpath')
    cdll.LoadLibrary('my.dll')
    # cdll.LoadLibrary('mydllpath/my.dll')  # Also unsuccessful

好吧,第二行代码的 print() 将 mydll.dll 列为目录中的文件之一,但 Python/cdll 仍然返回完全相同的错误消息:“找不到...”
寻找想法/建议。谢谢...

【问题讨论】:

  • 很难判断出了什么问题,但我猜自升级以来缺少一些依赖项。您可能需要重新编译。如果这不起作用,请提取并提供 minimal reproducible example 并提供完整的 (!) 错误消息,包括回溯。

标签: python c loadlibrary python-3.8


【解决方案1】:

好的,我发现了问题: Python 返回错误消息:“找不到模块'mydll.dll'”是否有问题定位 mydll,或 mydll 依赖的另一个 dll。 Python 3.8.2 还使错误消息更具描述性。
在我的例子中,mydll.dll 依赖于一个广泛使用的 dll,它位于目录树的上一层。一旦我使用 os.add_dll_directory() 将该文件夹添加到我的搜索路径中,程序又开始工作了。

【讨论】:

  • 你遇到 Python 抛出 AttributeError: module 'os' has no attribute 'add_dll_directory' 的问题了吗?这就是我在执行 os.add_dll_directory(dllpath) 时得到的结果 - dllpath 当然是我所有驱动程序 dll 所在的主文件夹
  • 抱歉,对我来说这是一个新的。思路:查看模块“os”以确保错误信息正确。
猜你喜欢
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多