FileNotFoundError:找不到模块“libvlc.dll”

新手上路,请多包涵

使用 Python 3.8.0,64 位

操作系统:Windows 10 Pro,版本 10.0.15063 Build 15063,64 位

VLC,3.0.8 Vetinari,64 位

已通过 PIP 安装 Python VLC Bindings

VLC 的路径和 libvlc.dll 的直接路径都在我的“PYTHONPATH”和“PATH”环境变量中。

我正在通过 Windows 命令提示符运行我的脚本。

我试图运行的脚本是一行:

 import vlc

这是命令提示符告诉我的内容:

 Traceback (most recent call last):
  File "001.py", line 1, in <module>
    import vlc
  File "C:\Program Files\Python38\lib\site-packages\vlc.py", line 207, in <module>
    dll, plugin_path  = find_lib()
  File "C:\Program Files\Python38\lib\site-packages\vlc.py", line 163, in find_lib
    dll = ctypes.CDLL(libname)
  File "C:\Program Files\Python38\lib\ctypes__init__.py", line 369, in __init__
    self._handle = _dlopen(self._name, mode)
FileNotFoundError: Could not find module 'libvlc.dll'. Try using the full path with constructor syntax.

我是 Python 的新手,非常感谢任何帮助!

原文由 james 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
1 个回答

来自 Python 3.8 发行说明:

现在可以更安全地解析扩展模块的 DLL 依赖项和在 Windows 上使用 ctypes 加载的 DLL。仅搜索系统路径、包含 DLL 或 PYD 文件的目录以及使用 add_dll_directory() 添加的目录以查找加载时依赖项。具体来说,不再使用 PATH 和当前工作目录,对它们的修改将不再对正常的 DLL 解析产生任何影响。如果您的应用程序依赖于这些机制,您应该检查 add_dll_directory(),如果它存在,则在加载您的库时使用它来添加您的 DLL 目录。请注意,Windows 7 用户需要确保已安装 Windows Update KB2533623(这也由安装程序验证)。

PATH 或者cwd不能再使用,除非你专门把这些目录添加到dll搜索路径中。

将 cwd 添加到搜索路径:

 import os
os.add_dll_directory(os.getcwd())

大多数库都提供一个环境变量来指定 dll 位置。那会用路径加载dll,这是可行的。

许多包将不得不为 py38 清理它们的库加载并决定如何处理它。它目前是很多混乱的根源。

原文由 Grimmy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题