【问题标题】:ImportError for cv2 with lackey in a virtualenvcv2 的 ImportError 与 virtualenv 中的走狗
【发布时间】:2017-06-16 16:29:54
【问题描述】:

大局是

在 Windows 7 中,使用 pip 在 python3.6.1 virtualenv 中安装的随从使用 python2.7.2 解释器从 virtualenv15.1.0 的解压缩 .tar.gz 创建无法导入 cv2 模块

上下文/环境

在带有C:\Users\user1>C:\Python27\python.exe C:\VirtualenvTools\virtualenv-15.1.0\virtualenv.py --python=C:\VirtualenvTools\Python36\Python.exe C:\virtualenvs\virtualenv一行)的 Windows 7 (x64) 中,我创建了一个 virtualenv 并设置它的 C:\virtualenvs\virtualenvname\Scripts\Python.exe 文件作为 Eclipse 中 PyDev 项目的主要解释器。

在使用activate 进入virtualenv 之后,我还在C:\virtualenvs\virtualenvname\Scripts\ 目录下输入了pip install lackey 命令,没有任何列出的错误(安装成功)。

问题

当我在我的 PyDev 项目中使用 from lackey import * 导入走狗时,Eclipse 的控制台中有一个 ImportError

控制台的堆栈跟踪:
Traceback (most recent call last):
File "C:\Users\user1\workspace\sikulixframework0.1\testManager.py", line 4, in <module>
from lackey import *
File "C:\virtualenvs\virtualenvname\lib\site-packages\lackey\__init__.py", line 31, in <module>
from .RegionMatching import Pattern, Region, Match, Screen, ObserveEvent
File "C:\virtualenvs\virtualenvname\lib\site-packages\lackey\RegionMatching.py", line 17, in <module>
import cv2File "C:\virtualenvs\virtualenvname\lib\site-packages\cv2\__init__.py", line 7, in <module>
from . import cv2
ImportError: DLL load failed: Le module spécifié est introuvable.

(Le module spécifié est introuvable.=找不到指定的模块。)

当直接使用相同的解释器 (C:\virtualenvs\virtualenvname\Scripts\Python.exe) 时,如果我写 from lackey import * 我会得到相同的 stackTrace

我的决议尝试

我在虚拟环境之外尝试了同样的事情 (from lackey import *),它成功了。就像在an answer to the stackoverflow's question 'Can't import cv2; “DLL load failed”' 中建议的那样,我下载了Visual C++ 2015 redistributable package,但我的并发症没有任何改变。

【问题讨论】:

标签: python virtualenv sikuli-script cv2 lackey


【解决方案1】:

我在 Windows PATH 环境变量中添加了从 path\to\original\python36\python.exe 中的原始 Python3.6.1 的路径 C:\Users\user1>C:\Python27\python.exe C:\VirtualenvTools\virtualenv.py --python=C:\VirtualenvTools\Python36\Python.exe C:\virtualenvs\virtualenv 用于创建 virtualenv 的命令包含该 python3.dll 文件并在 C:\virtualenvs\virtualenv\Scripts 目录中添加了相同的 python3.dll 文件并且它工作!

如果你使用 virtualenv 并且发生 ImportError 的总结(至少对于 cv2)

  1. 确保 virtualenv 引用的可执行文件(至少包含 python3.6.1 中的 python3.dll 文件)的路径(之后是创建命令的--python= 部分) 位于“PATH”Windows 环境变量中。
  2. 将相同的 python3.dll 文件添加到 virtualenv 所在的 \Scripts\ 目录中。

项目 git owner(glitchassassin) 的 answer 帮我解决了这个问题。他还表示这个问题是由 virtualenv 引起的:

看起来这实际上也是 virtualenv 中的an issue

关于virtualenv的问题,也有人找到了相同的解决方案:

[N]不需要从不受信任的随机 Internet 站点下载 DLL 文件,只需将 c:/Python3.5/(或安装 Python 3.5 的任何位置)中的文件复制到 %PATH% 上的任何目录即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2017-06-18
    • 2015-05-20
    • 2014-01-30
    • 2021-03-20
    相关资源
    最近更新 更多