【问题标题】:OSError: Cannot find pyvips library (DLLs)OSError:找不到 pyvips 库(DLL)
【发布时间】:2022-12-23 05:29:04
【问题描述】:

我面临无法导入 pyvips 的问题,因为操作系统找不到所有 DLL 所在的目录。

>>> import pyvips
Traceback (most recent call last):
  File "C:\Users\istab\.virtualenvs\RPAS_DS_UI-v4ujo25h\lib\site-packages\pyvips\__init__.py", line 19, in <module>
    import _libvips
ModuleNotFoundError: No module named '_libvips'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\istab\.virtualenvs\RPAS_DS_UI-v4ujo25h\lib\site-packages\pyvips\__init__.py", line 70, in <module>
    gobject_lib = ffi.dlopen(_gobject_libname)
  File "C:\Users\istab\.virtualenvs\RPAS_DS_UI-v4ujo25h\lib\site-packages\cffi\api.py", line 150, in dlopen
    lib, function_cache = _make_ffi_library(self, name, flags)
  File "C:\Users\istab\.virtualenvs\RPAS_DS_UI-v4ujo25h\lib\site-packages\cffi\api.py", line 832, in _make_ffi_library
    backendlib = _load_backend_lib(backend, libname, flags)
  File "C:\Users\istab\.virtualenvs\RPAS_DS_UI-v4ujo25h\lib\site-packages\cffi\api.py", line 828, in _load_backend_lib
    return backend.load_library(path, flags)
OSError: cannot load library 'C:\Users\istab\RPAS_2\RPAS_DS_UI\vips-dev-8.13\bin\libgobject-2.0-0.dll': error 0x7e

我按照文档 Here 将 bin 文件夹添加到 PATH 但出现了同样的问题。这不是我第一次遇到包的 DLL 问题 :')

有什么想法吗?

【问题讨论】:

  • 你是如何安装(构建)这个包的?
  • @CristiFati 使用pip install pyvips,安装成功。
  • 如果在import pyvips之前你有os.add_dll_directory("c:\\vips-dev-8.7\\bin")(或者你安装的任何路径)LibVIPS在)?

标签: python dll


【解决方案1】:

这是 [SO]: PyWin32 and Python 3.8.0 (@CristiFati's answer) 的副本,但我要添加一些细节。

[PyPI]: pyvips 2.2.1非 conda 安装节)指出:

要从 Python 中设置 PATH,您需要在开始时使用如下内容:

import os
vipshome = 'c:\vips-dev-8.7\bin'
os.environ['PATH'] = vipshome + ';' + os.environ['PATH']

现在,当您导入 pyvips 时,它应该能够找到 DLL。

这不再正确(从蟒蛇3。8个- 检查 1英石网址为什么)。
PyVIPS(v2.2.1- 最新的回答时间)不支持Python 3.8(最高是v3。6个).

为了Python 3.8+ 兼容性(并保持旧的),上面的 sn-p 应该是(文本也需要一些修改):

import os
add_dll_dir = getattr(os, "add_dll_directory", None)
vipsbin = r"c:ips-dev-8.7in"  # LibVIPS binary dir
if callable(add_dll_dir):
    add_dll_dir(vipsbin)
else:
    os.environ["PATH"] = os.pathsep.join((vipsbin, os.environ["PATH"]))

import pyvips

创建[GitHub]: libvips/pyvips - Update install steps for Python 3.8+ 来跟踪这个(固定在221003).

【讨论】:

  • 感谢您打开这个问题,我已经合并了您的建议。
【解决方案2】:

强制公司 windows 10 21H2 更新后似乎不再工作。 仍然得到:ModuleNotFoundError:没有名为“pyvisa”的模块

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2020-04-16
    相关资源
    最近更新 更多