大图是
在Windows 7中,在从解压缩的virtualenv15.1.0的.tar.gz中使用python2.7.2解释器创建的python3.6.1 virtualenv中,通过pip安装的bugey无法导入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命令之后,我也安装了bugey,没有任何列出的错误(安装有效)。
问题
当我在PyDev项目中使用from lackey import *导入苦味时,Eclipse的控制台中有一个ImportError。
控制台的stackTrace:
Traceback (most recent call last):
File"C:\Users\user1\workspace\sikulixframework0.1\testManager.py", line 4, in
from lackey import *
File"C:\virtualenvs\virtualenvname\lib\site-packages\lackey\__init__.py", line 31, in
from .RegionMatching import Pattern, Region, Match, Screen, ObserveEvent
File"C:\virtualenvs\virtualenvname\lib\site-packages\lackey
egionMatching.py", line 17, in
import cv2
File"C:\virtualenvs\virtualenvname\lib\site-packages\cv2\__init__.py", line 7, in
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 *),并且可以正常工作。就像在对stackoverflow问题"无法导入cv2;" DLL加载失败",我下载了Visual C ++ 2015可再发行组件包,但是我的复杂性没有改变。
-
也许Lossey在virtualenv中不能很好地工作。 像Google的应用引擎(pdb)一样? stackoverflow.com/questions/8694741/
我在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的路径,以创建包含该python3.dll文件的virtualenv,并添加了C: virtualenvs virtualenv Scripts目录中的相同python3.dll文件,它起作用了!
如果您使用virtualenv并且发生ImportError(至少对于cv2),则为摘要
确保由virtualenv(在创建命令的--python=部分之后)引用的可执行文件(至少包含python3.6.1中的python3.dll文件)的路径在Windows环境变量" PATH"中。
将相同的python3.dll文件添加到virtualenv所在的 Scripts 目录中。
矮人项目git owner(glitchassassin)的回答帮助我解决了这个问题。他还指出此问题是由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%.