virtualenv 中带有走狗的 cv2 的 ImportError
ImportError for cv2 with lackey in a virtualenv
大图是
在 Windows 7 中,lackey 在 python3.6.1 virtualenv 中安装了 pip,该 virtualenv 使用 python2.7.2 解释器从 virtualenv15 的解压 .tar.gz 创建。 1.0 无法导入 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 后安装了 lackey 然后 pip install lackey
命令 @ C:\virtualenvs\virtualenvname\Scripts\ 目录没有任何列出的错误(安装成功)。
问题
当我在我的 PyDev 项目中使用 from lackey import *
导入 lackey 时,Eclipse 的控制台中有一个 ImportError
。
控制台的堆栈跟踪:
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 *
),并且成功了。就像 , I downloaded the Visual C++ 2015 redistributable package 中的建议,但我的并发症没有任何改变。
我在Windows PATH环境变量中添加了从path\to\original\python36\python.exe到原来Python3.6.1的路径在包含 python3.dll 文件并添加相同 python3.dll 文件的 virtualenv 创建的 C:\Users\user1>C:\Python27\python.exe C:\VirtualenvTools\virtualenv.py --python=C:\VirtualenvTools\Python36\Python.exe C:\virtualenvs\virtualenv
命令中在 C:\virtualenvs\virtualenv\Scripts 目录中,它成功了!
如果您使用 virtualenv 并且发生 ImportError 时的总结(至少对于 cv2)
- 确保 virtualenv 引用的可执行文件路径(至少包含 python3.dll 文件 python3.6.1) (在创建命令的
--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%.
大图是
在 Windows 7 中,lackey 在 python3.6.1 virtualenv 中安装了 pip,该 virtualenv 使用 python2.7.2 解释器从 virtualenv15 的解压 .tar.gz 创建。 1.0 无法导入 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 后安装了 lackey 然后 pip install lackey
命令 @ C:\virtualenvs\virtualenvname\Scripts\ 目录没有任何列出的错误(安装成功)。
问题
当我在我的 PyDev 项目中使用 from lackey import *
导入 lackey 时,Eclipse 的控制台中有一个 ImportError
。
控制台的堆栈跟踪:
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 *
),并且成功了。就像
我在Windows PATH环境变量中添加了从path\to\original\python36\python.exe到原来Python3.6.1的路径在包含 python3.dll 文件并添加相同 python3.dll 文件的 virtualenv 创建的 C:\Users\user1>C:\Python27\python.exe C:\VirtualenvTools\virtualenv.py --python=C:\VirtualenvTools\Python36\Python.exe C:\virtualenvs\virtualenv
命令中在 C:\virtualenvs\virtualenv\Scripts 目录中,它成功了!
如果您使用 virtualenv 并且发生 ImportError 时的总结(至少对于 cv2)
- 确保 virtualenv 引用的可执行文件路径(至少包含 python3.dll 文件 python3.6.1) (在创建命令的
--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%.