问题:
尝试将python-tesseract导入我的项目(OCR 功能)时出现此错误:
ImportError: DLL load failed: %1 is not a valid Win32 application.
- 我不知道到底是什么问题
- 我没有技能和知识来追踪这类问题的根本原因。
背景:
据我了解,tesseract 是一个 32 位应用程序。我正在运行 Windows 7、64 位和 64 位 python。其他人似乎在这些条件下运行 tesseract,但他们并不理想,可能会导致这一挑战。
堆栈跟踪
这是来自 PyCharm 的错误跟踪。如您所见,它没有指定出现问题的文件,而是说它找不到看起来像字符串格式的参数:%1
回溯(最近一次通话最后): 文件“C:\Program Files (x86)\JetBrains\PyCharm 2.7.3\helpers\pydev\pydevd.py”,第 1481 行,在 debugger.run(setup['file'], None, None) 运行中的文件“C:\Program Files (x86)\JetBrains\PyCharm 2.7.3\helpers\pydev\pydevd.py”,第 1124 行 pydev_imports.execfile(file, globals, locals) #执行脚本 文件“C:/Dropbox/COC/automate/coc_automate/python/__init__.py”,第 7 行,在 导入正方体 文件“C:\Python27\lib\site-packages\tesseract.py”,第 28 行,在 _tesseract = swig_import_helper() swig_import_helper 中的文件“C:\Python27\lib\site-packages\tesseract.py”,第 22 行 _mod = imp.load_module('_tesseract', fp, 路径名, 描述) ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序。
依赖步行者
在似乎是问题的文件上运行依赖walker:_tesseract.pyd
并发现了一些看起来很奇怪的事情:
- 它找不到 Python27.dll
- 尽管我已经成功使用 Python 很长时间了。
- 我确认它
Python.dll
位于C:\Windows\System32
我的系统上
- 该文件
MSVCR90.DLL
是错误的 CPU 版本。- 它不在“预期”区域中,例如
C:\Windows\System32
,而是在我已安装的利基图形库的程序文件目录中:c:\program files\graphicsmagick-1.3.18-q8\MSVCR90.DLL
. 两个安装会相互混淆吗?
- 它不在“预期”区域中,例如
PYTHON27.DLL 打开文件时出错。系统找不到指定的文件 (2)。 API-MS-WIN-CORE-COM-L1-1-0.DLL 系统找不到指定的文件 (2)。 API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL 系统找不到指定的文件 (2)。 API-MS-WIN-CORE-WINRT-L1-1-0.DLL 系统找不到指定的文件 (2)。 API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL 系统找不到指定的文件 (2)。 API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL 系统找不到指定的文件 (2)。 API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL 系统找不到指定的文件 (2)。 DCOMP.DLL 系统找不到指定的文件 (2)。 GPSVC.DLL 系统找不到指定的文件 (2)。 IESHIMS.DLL 系统找不到指定的文件 (2)。 ... c:\program files\graphicsmagick-1.3.18-q8\MSVCR90.DLL(好像是CPU版本不对) 错误:未找到至少一个必需的隐式或转发依赖项。 错误:由于隐式依赖模块中缺少导出函数,至少一个模块具有未解析的导入。 错误:发现具有不同 CPU 类型的模块。 警告:至少没有找到一个延迟加载依赖模块。 警告:由于延迟加载依赖模块中缺少导出功能,至少有一个模块存在未解析的导入。
截屏: