【问题标题】:Error "ImportError: DLL load failed: %1 is not a valid Win32 application"ImportError: DLL 加载失败: %1 不是有效的 Win32 应用程序
【发布时间】:2013-01-15 19:01:20
【问题描述】:

我遇到了这个问题,我尝试在 python 上导入 cv2 并收到以下错误消息。

>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: %1 is not a valid Win32 application.

我知道有很多关于这个的帖子都建议包的位数与python包不同。

但是,我运行的一切都是 64 位的。我在win7 64位,我有winpython 2.7.3.3,64位分发,我用here提供的指令编译了64位opencv并将cv2.pyd dll放在Lib/site-packages文件夹中蟒蛇。

不幸的是,使用 32 位版本的 python 的建议不再适用于我,因为我必须处理对于 32 位来说太大的 numpy 数组。

谢谢!!!

------更新

唯一缺少的是将新的 opencv 二进制文件路径(C:\opencv\build\bin\Release)添加到 Windows PATH 环境变量,重新启动 python。

现在似乎一切正常!

【问题讨论】:

    标签: python opencv importerror


    【解决方案1】:

    您可以尝试安装 32 位版本的 opencv

    【讨论】:

    • 请注意,此问题已解决,如问题的更新部分所述。
    • @Francis 找到解决方案后,请始终将其添加为答案,而不是将其添加到您的问题中。
    【解决方案2】:

    由于对 Win32 的引用,ImportError 消息有点误导,而问题只是未找到 opencv DLL。

    通过将 opencv 二进制文件的路径添加到 Windows PATH 环境变量中解决了这个问题(例如,在我的计算机上,此路径为:C:\opencv\build\bin\Release)。

    【讨论】:

    • 执行此操作的步骤是什么?
    • 我不明白的是,为什么错误消息没有说明无法加载的 DLL? %1 似乎只是 DLL 名称的占位符。
    • 嗯,好的。因此,如果您在 64 位计算机上修复该错误,则必须从 x64 文件夹中复制 cv2.pyd。 @antred 这是一个占位符。它通常会被 DLL 替换,但它不起作用,因为 32 位无法在 64 位机器上加载。
    • @Francis:先生,您应该获得奖牌!谢谢,真的。
    • @AlexW 你是说 cv2.pyd 应该被复制...但是在哪里复制呢?
    【解决方案3】:

    或者你必须为win 64bit重建cv2模块。

    【讨论】:

      【解决方案4】:

      当我遇到此错误时,我的计算机崩溃并重新启动后它就消失了。尝试关闭并重新打开您的 IDE,如果不起作用,请尝试重新启动计算机。当我收到此错误时,我刚刚安装了库而没有重新启动 pycharm。

      永远不要先关闭 PyCharm 进行测试,因为我的电脑一直在随机崩溃……正在解决这个问题,但它至少解决了这个问题……小胜利……:)。

      【讨论】:

        【解决方案5】:

        您只需将 cv2.pyd 文件从 x86 文件夹(例如 C:\opencv\build\python\2.7\x86\)复制到 C:\ Python27\Lib\site-packages\ ,而不是来自 x64 文件夹。

        希望对你有所帮助。

        【讨论】:

          【解决方案6】:

          我刚刚点击了这个,问题是该软件包曾一度安装在每个用户的软件包目录中。 (在 Windows 上。)又名 %AppData%\Python。因此 Python 首先查找那里,找到了 .pyd 文件的旧 32 位版本,但由于列出的错误而失败。不幸的是, pip uninstall 本身不足以清除它,此时 pip 10.0.1 似乎没有用于卸载的 --user 参数,仅用于安装。

          tl;dr 从 %AppData%\python\python27\site-packages 中删除旧的 .pyd 为我解决了这个问题。

          【讨论】:

          • 这也是我的问题。有一个旧版本的 python 似乎没有被正确删除。必须运行系统文件检查器来清理它
          【解决方案7】:

          python版本混用也会出现这个错误:

          例如,如果要加载的任何 DLL 已使用 python 2.7.16 编译,并且您尝试使用 python 2.7.15 导入,则会引发此错误 ImportError: DLL load failed: %1 is not a valid Win32 application.

          这至少是我发现的问题所在。

          【讨论】:

            【解决方案8】:

            我发布这个答案,以防有人还在寻找

            我遇到了与上述相同的错误,但仅在我使用 pyinstaller 时才会发生

            我在诗歌中做了以下事情

            poetry run python -m pip install pypiwin32

            它对我有用。我正在使用

            python                            3.8.10
            pyinstaller                       4.7
            # Those are the versions that worked for me
            pypiwin32                         223
            pywin32                           303
            pywin32-ctypes                    0.2.0
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-08-14
              • 2012-09-08
              • 2012-03-05
              • 2014-01-02
              • 1970-01-01
              • 2017-04-26
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多