ImportError:DLLの読み込みに失敗しました:%1は有効なWin32アプリケーションではありません。しかし、DLLは


112

ImportErrorの状況に非常に似ています。DLLの読み込みに失敗しました:%1は有効なWin32アプリケーションではありませんが、その答えはうまくいきません。

私のPythonコードは言う:

import cv2

しかし、その行は、この質問のタイトルに示されているエラーをスローします。

C:\lib\opencvこの64ビットマシンにOpenCVをインストールしました。64ビットのPythonを使用しています。

私のPYTHONPATH変数:PYTHONPATH=C:\lib\opencv\build\python\2.7。このフォルダに含まれcv2.pydているのはそれだけです。

私のPATH変数:Path=%OPENCV_DIR%\bin;...このフォルダーには、などの39個のDLLファイルが含まれていopencv_core246d.dllます。

OPENCV_DIRには次の値があります:OPENCV_DIR=C:\lib\opencv\build\x64\vc11

ImportErrorでの解決策:DLLの読み込みに失敗しました:%1は有効なWin32アプリケーションではありませんC:\opencv\build\bin\Release。「Windows PATH環境変数に新しいopencvバイナリパス()を追加する」と表示されます。しかし、上記のようC:\lib\opencv\build\x64\vc11\binに、PATHにOpenCVバイナリフォルダー()が既にあります。そして、私のOpenCVインストールには、Releaseフォルダーがありません(build / javaの下の空のフォルダーを除く)。

何が問題になっているのかについてのアイデアはありますか?ロードプロセスを詳細にトレースするようにPythonに指示できますか?正確にどのDLLを探していますか?

ありがとう、ラース

編集:

http://www.dependencywalker.com/によると、cv2.pydin C:\lib\opencv\build\python\2.7は32ビットですが、実行しているマシンとPythonは64ビットであることに気づきました。それが問題でしょうか?その場合、64ビットバージョンのcv2.pydはどこにありますか?


9
クリックここ と64ビットのOpenCVのを見つける
キルコンソール

1
@KillConsole:よろしくお願いします。ダウンロードしたインストールパッケージにはx86とx64の両方のサブフォルダーが含まれていたため、64ビットの場合に必要なものがすべて含まれていると想定しました。どうやらそうではない。やった、それで直った!これで「ImportError:numpy.core.multiarray failed to import」になっているので、同じサイトで64ビットのnumpyを試します。あなたのコメントを回答にすると、私は賛成して受け入れます。
LarsH 2013

どのPythonバージョンを使用しましたか?(プロセッサビットバージョンではありません)

1
@Begueradj:2.7、それがあなたが求めていることなら。
LarsH 2015

1
私は同じ問題を抱えていて、以下の解決策のどれもPYTHONPATH役に立たなかったので、SimpleCVライブラリのインストールによって残されたエントリが含まれていることがわかりました。SimpleCVをすでにアンインストールしているにもかかわらず、これPYTHONPATHは復元されず、SimpleCVのインストールによって残されたOpenCVのバージョンが競合しているディレクトリをポイントしていました。解決策:をクリアしPYTHONPATHます。
アントンダネイコ

回答:


81

Python拡張パッケージ用の非公式のWindowsバイナリ

ここからpython libsを見つけることができます


これは本当に役に立ちました。何が悪かったのかわかりません。私はopencv、anaconda3、python3のバージョンを持っていました。上記のパッケージリストからopencv_python-3.3.0 + contrib-cp35-cp35m-win_amd64をインストールし、何時間もの苦労の後にcv2を正常にインポートできました。トンありがとう。
emeralddove 2017

41

使用しているpythonのバージョンも64ビットかどうかを確認してください。そうでない場合は、それが問題である可能性があります。32ビットのpythonバージョンを使用し、OPENCVライブラリ用の64ビットのバイナリをインストールします。


質問で述べたように、私は64ビットのPythonを使用していました。
LarsH 2014

17

うわー、私はこの問題の別のケースを見つけました。上記のどれもうまくいきませんでした。最終的に私はpythonの機能を使用して、何がロードされているかを内省しました。Python 2.7の場合、これは次のことを意味します。

import imp
imp.find_module("cv2")

これにより、Anaconda DLLディレクトリに完全に予期しない「cv2.pyd」ファイルが表示され、複数回のアンインストール/インストールの試行によって影響を受けることはありませんでした。Pythonが最初にそこを探していて、私の良いインストールが見つかりませんでした。そのcv2.pydファイルを削除し、imp.find_module( "cv2")を再試行したところ、Pythonはすぐに正しいファイルを見つけ、cv2が機能し始めました。

したがって、他の解決策がどれもうまくいかない場合は、pythonのイントロスペクションを使用して、pythonがロードしようとしているファイルを確認してください。


4
別のフォルダにあるバージョンのファイルを完全に実行しようとしていたという問題がありました。ここでのこのソリューションは、実際に何が起こっているのかを理解するのに役立ちました。ありがとう!
Emad Y

3
これは素晴らしい答えです、ありがとう!PyDevで問題が発生し、互換性のないpythonのインストールから「ctypes」を読み込んでいたところ、WinPythonを使用するようにインタープリターを設定する必要があることに気付き、それを修正しました。
eacousineau 2017

7

私の場合、64ビットのpythonがあり、lxmlが間違ったバージョンでした-x64バージョンも使用しているはずです。ここでlxmlの64ビットバージョンをダウンロードしてこれを解決しました。

https://pypi.python.org/pypi/lxml/3.4.1

lxml-3.4.1.win-amd64-py2.7.exe

これはイライラする問題に対する最も簡単な答えでした。


6

私はこの問題を抱えていましたが、それは私がopencvファイルのx64バージョンを使用していたからというだけのことです。x86を試してみましたが、うまくいきました。


2

ビルドシステム(私の場合はCMake)がから<name>.dllにファイルをコピーする<name>.pyd場合、元のファイルが実際にはDLLではなかった場合、このエラーが発生します。私の場合、共有ライブラリのビルドがオフになっているため、基になるファイルは実際には*.libでした。

DependencyWalkerにpydファイルをロードし、それが有効ではないことを発見して、このエラーを発見しました。


2

私も同じ問題を抱えていました。これが私がしたことです:

  1. ここからpywin32 Wheelファイルをダウンロードし、

  2. pywin32モジュールをアンインストールしました。アンインストールするには、コマンドプロンプトで次のコマンドを実行します。

    pip uninstall pywin32

  3. 次に、pywin32を再インストールしました。それをインストールするには、pywin32 wheelファイルがあるのと同じディレクトリでコマンドプロンプトを開きます。次に、次のコマンドを実行します。

    pip install <Name of the wheel file with extension> Wheelファイルは次のようになります:piwin32-XXX-cpXX-none-win32.whl

それは私のために問題を解決します。また、試してみるのもいいでしょう。それもあなたのために働くことを願っています。


2

フォルダcv2.pydからでは/opencv/build/python/2.7/x86なく、フォルダからにファイルをコピー/x64しましたC:/Python27/Lib/site-packegesここに記載れている残りの指示に従いました

確認されていない他のユーザーによって追加されました:ファイルもcv2.pydフォルダーにコピーしますC:/Python27/Lib/site-packages/cv2。できます。


1

私にとっての問題は、同じ Eclipseプロジェクトで異なるバージョンのPythonを使用していたことです。私のセットアップは、プロジェクトのプロパティ実行構成の Pythonバージョンと一致していませんでした。

[プロジェクト]> [プロパティ]> [PyDevは、私がPython2.7.11にインタプリタのセットを持っていました。

実行構成>通訳、私はデフォルトのインタプリタを使用していました。これをPython 2.7.11に変更すると、問題が修正されました。


1

32ビットのWindowsインストーラーを使用してシステムに別のバージョンの2.7.xのPythonをアンインストールして再インストールしたときも、同じ問題に直面しました。ほとんどのインポートステートメントで同じエラーが発生しました。新しくインストールしたPythonをアンインストールし、64ビットのWindowsインストーラーをダウンロードして、Pythonを再インストールしました。これがお役に立てば幸いです。


1

Windowsでのvtkのインストールで問題が発生しました(python 3.7を使用しているため、これまでのバージョンのpythonだけで使用できるバイナリはありません。pipinstall vtkが機能していません)

私は私のcmdでpythonを書きました:

Python 3.7.3 on win32

つまり、32ビットでpython 3.7.3を実行していることがわかりました。

次に、正しいホイールをダウンロードしました VTK‑8.2.0‑cp37‑cp37m‑win32.whlにダウンロードしました

次に、そのホイールをインストールしました:

pip install VTK-8.2.0-cp37-cp37m-win32.whl

それから私はそれをテストし、それはうまくいきました:

python
import vtk


0

まずcv2.pyd、からにコピーし/opencv/build/python/2.7/x86ましたC:/Python27/Lib/site-packeges。エラーは

「RuntimeError:APIバージョン9に対してコンパイルされたモジュールですが、このバージョンのnumpyは7です」

それから私はインストールしnumpy-1.8.0-win32-superpack-python2.7.exe、opencvは正常に動作します。

>>> import cv2
>>> print cv2.__version__
2.4.13


0
  1. Python 2.7.12以前のバージョンがインストールされていることを確認してください。そうしないと、このエラーが確実に発生します。
  2. OSが64ビットの場合は、Oracleクライアントが64ビットにインストールされていることを確認してください。
  3. Python 2.7用Microsoft Visual C ++コンパイラが64ビットOsの場合は64ビット、32ビットの場合は32ビットであることを確認してください。注:-OSが64ビットの場合、64ビットのすべてのパッケージをインストールするか、OSが32ビットの場合、32ビットパッケージをインストールします。

0

それは非常に単純な解決策を持っています。設置opencv 場所後

cv2.pydからC:\opencv\build\python\2.7\ **x64**までC:\Python27\Lib\site-packages

代わりに、場所cv2.pydからC:\opencv\build\python\2.7\ **x86**C:\Python27\Lib\site-packages


0

MySQLdbをインポートしようとすると、このエラーが発生しました。

私にとってうまくいったのは、Pythonをアンインストールしてから再インストールすることでした。

npmをインストールした後、エラーが発生しました(https://www.npmjs.com/get-npm)。私がすでに持っていたとしても、Pythonをインストールすることでした。


0

これでうまくいきました。私はさまざまな方法を試しましたが、これが私の最善の解決策でした。

コマンドプロンプトを開き、次のように入力します。 pip install opencv-python。(インターネットがオンになっていることを確認してください)。その後、もう一度インポートしてみてください。



-2

私は解決策を見つけました。anacondaプロンプトウィンドウではなくcmdウィンドウを使用して、最初のスクレイピーテストを開始することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.