- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Python 3.x 和一个 virtualenv——不是 conda,只是一个普通的 virtualenv。我激活 venv 并运行 pip install opencv-python
。然而,import 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。
导入行是 from .cv2 import *
,所以被加载的模块与 __init__.py
在同一目录中(这是前导 。
) 并命名为 cv2-SOMETHING.pyd
(这就是 native 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\"
关于python - 如何诊断 ImportError : DLL load failed when loading native Windows python modules in a virtualenv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48352027/
我是一名优秀的程序员,十分优秀!