我正在使用Python 3.x和virtualenv-不是conda,只是普通的virtualenv.
我激活venv并运行pip install opencv-python.然而,
导入cv2给我一个DLL not found错误:
(tf) C:\>python
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\src\venv\tf\lib\site-packages\cv2\__init__.py", line 4, in <module>
from .cv2 import *
ImportError: DLL load failed: The specified module could not be found.
>>>
这是virtualenv错误吗?如何找出缺少的模块/ dll?
解决方法:
解决“找不到模块”错误时
尝试在要加载的模块上使用Microsoft的Dependency Walker或lucasg的Dependencies.确保从您的virtualenv的命令提示符下运行Dependencies.exe,以便它可以选择修改后的PATH.
导入行来自.cv2 import *,因此要加载的模块与__init__.py在同一个目录(这是前导.),并命名为cv2-SOMETHING.pyd(这是本机Python模块的外观).将该文件加载到Dependencies.exe中,它将显示Windows想要但找不到的DLL.
在这种情况下,DLL是Python3.dll.为什么会丢失?由于a virtualenv bug已修复,但尚未发布,因此一年多没有发布了.
特别是在解决这个问题上
github问题提出了一个解决方案:使用venv.
或者,您可以手动将缺少的python3.dll复制到您的virtualenv中.您必须为创建的每个virtualenv执行此操作.
copy "c:\Program Files\Python36\python3.dll" "c:\src\venv\tf\Scripts\"