2

大图是

在 Windows 7 中,在 python3.6.1 virtualenv 中使用 pip 安装的随从从 virtualenv15.1.0 的解压缩 .tar.gz 创建的 python2.7.2 解释器无法导入 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 项目的主要解释器。

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

问题

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

控制台的堆栈跟踪:
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. = 找不到指定的模块。)

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

我的决心尝试

from lackey import *我在虚拟环境之外尝试了相同的事情( )并且它起作用了。就像在回答 stackoverflow 的问题'Can't import cv2; “DLL 加载失败”,我下载了Visual C++ 2015 可再发行包,但我的复杂性没有任何改变。

4

1 回答 1

1

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

如果您使用 virtualenv 并且发生 ImportError 的摘要(至少对于 cv2)

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

走狗项目 git owner(glitchassassin) 的回答帮助我解决了这个问题。他还指出这个问题是由 virtualenv 引起的:

看起来这实际上也是virtualenv 中的一个问题

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

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

于 2017-06-16T19:16:48.690 回答