在virtualenv

时间:2017-06-16 16:29:55

标签: python virtualenv sikuli-script cv2 lackey

大图是

在Windows 7中,在使用python2.7.2解释器创建的python3.6.1 virtualenv中使用pip安装的lackey来自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 < / em> file作为Eclipse中PyDev项目的主要解释器。

我在使用activate进入virtualenv之后安装了lackey,然后使用pip install lackey命令@the C:\ virtualenvs \ virtualenvname \ Scripts \ 目录,没有任何列出的错误(安装工作)。

问题

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

控制台的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.

  

(Lemodulespécifiéestintrouvable。=找不到指定的模块。)

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

1 个答案:

答案 0 :(得分:1)

我在Windows PATH环境变量中添加了从{em> path \到\ original \ python36 \ python.exe C:\Users\user1>C:\Python27\python.exe C:\VirtualenvTools\virtualenv.py --python=C:\VirtualenvTools\Python36\Python.exe C:\virtualenvs\virtualenv命令中原始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 \ 目录中。
  3. lackey项目git所有者(glitchassassin)的answer帮助我解决了这个问题。他还指出,这个问题是由virtualenv引起的:

      

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

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

      

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