python - 在 virtualenv 中存在 cv2 的 ImportError

标签 python opencv virtualenv sikuli-script

大局是

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

背景/环境

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

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

问题

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

控制台的 stackTrace:
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 cv2
File "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. = The specified module could not be found.)

直接使用相同的解释器(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但我的并发症没有任何改变。

最佳答案

我在Windows PATH环境变量中添加了从C:\Users\user1>C:\Python27\python.exe C:\VirtualenvTools\virtualenv.py --python=C:\VirtualenvTools\Python36\Python.exe C:\virtualenvs\virtualenv中的path\to\original\python36\python.exe到原始Python3.6.1的路径用于创建 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所有者(glitchassassin)的answer帮助我解决了这个问题。他还指出这个问题是由 virtualenv 引起的:

Looks like this is actually also an issue in virtualenv.

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

[N]o need to download DLL files from untrusted random Internet sites, just copy the one from c:/Python3.5/ (or wherever you installed Python 3.5) into any directory on your %PATH%.

关于python - 在 virtualenv 中存在 cv2 的 ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44593975/

相关文章:

python - 一起使用 virtualenvwrapper 和 pyenv

python - 在 Cygwin 中重用 PyCharm Python 虚拟环境?

Python 复杂查询

python - lxml.etree 不能在 python 3 中使用 cdata

python - 在 Python Spyder IDE 中使用 Plotly

python - 在 Python 中使用 OpenCV 检测掌纹

opencv - 如何确定立体视觉的适当视差值

python - 为什么我的 Opencv 没有响应或没有执行任何操作?

python - ImportError : No module named site. Flask + uWSGI +virtualenv

python - 处理丢失数据时出现 IndexError : too many indices for array ,