大局是
在 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)
- 确保 virtualenv 引用的可执行文件的路径(至少包含 python3.6.1 中的 python3.dll 文件)(之后是创建命令的
--python=
部分) ) 位于“PATH”Windows 环境变量中。 - 将相同的 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/