ImportError:DLL loadが失敗しました:%1は有効なWin32アプリケーションではありません 。私のために働いています。
私のPythonコードはこう言う:
import cv2
しかし、その行はこの質問のタイトルに示されているエラーを投げます。
私はこの64ビットマシンのC:\lib\opencv
にOpenCVをインストールしました。私は64ビットのPythonを使っています。
私のPYTHONPATH変数:PYTHONPATH=C:\lib\opencv\build\python\2.7
。このフォルダにはcv2.pyd
が含まれています。
私のPATH変数:Path=%OPENCV_DIR%\bin;...
このフォルダーには、opencv_core246d.dll
などの39 DLLファイルが含まれています。
OPENCV_DIRの値はOPENCV_DIR=C:\lib\opencv\build\x64\vc11
です。
ImportError:DLL loadでの解決策が失敗しました:%1は有効なWin32アプリケーションではありません Windowsに新しいopencvバイナリパス(C:\opencv\build\bin\Release
)を追加するように指示しますPATH環境変数 "#:。しかし上に示したように、私はすでに自分のPATHにOpenCVバイナリフォルダ(C:\lib\opencv\build\x64\vc11\bin
)を持っています。そして私のOpenCVインストールにはReleaseフォルダがありません(build/Javaの下の空のフォルダを除く)。
何が問題になっているのですか?ロード処理を冗長にトレースするようにPythonに指示できますか?正確には何のDLLですか?
ありがとう、ラース
http://www.dependencywalker.com/ によると、cv2.pyd
のC:\lib\opencv\build\python\2.7
は32ビットですが、私が実行しているマシンとPythonは64ビットそれが問題でしょうか。そしてもしそうなら、どこに私はcv2.pydの64ビットバージョンを見つけることができますか?
あなたはここからpythonライブラリを見つけることができます
使用しているPythonのバージョンも64ビットかどうかを確認してください。そうでない場合は、それが問題になる可能性があります。あなたは32ビットのpythonバージョンを使用しているでしょうし、OPENCVライブラリ用に64ビットのバイナリをインストールしているでしょう。
うわー、私はこの問題のためのさらに別のケースを見つけました。上記のどれもうまくいきませんでした。最終的に私はロードされているものをイントロスペクトするために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がロードしようとしているファイルを確認してください。
私はちょうどこの問題を抱えていました、それは私がopencvファイルのx64バージョンを使用していたという理由だけでそれがそれを変えました。 x86を試してみて、それはうまくいった。
私の場合、私は64ビットのPythonを持っています、そしてそれは間違ったバージョンであるlxmlでした - 私はそれのx64バージョンも使っていたはずです。私はここにlxmlの64ビット版をダウンロードすることによってこれを解決しました:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-AMD64-py2.7.exe
これはイライラする問題への最も簡単な答えでした。
あなたのビルドシステム(私の場合はCMake)が<name>.dll
から<name>.pyd
にファイルをコピーした場合、元のファイルが実際にはdllでなかったなら、このエラーを受け取るでしょう。私の場合、共有ライブラリの構築は無効になっているので、基礎となるファイルは実際には*.lib
です。
このエラーを発見したのは、 DependencyWalker にpyd
ファイルをロードし、それが無効であることを発見したためです。
cv2.pyd
ファイルを/opencv/build/python/2.7/x86
フォルダーから/x64
にコピーするのではなく、C:/Python27/Lib/site-packeges
フォルダーからコピーしました。私はここで提供されている 残りの指示に従った 。
検証されていない他の誰かによって追加されたもの:私はまたファイルcv2.pyd
をフォルダC:/Python27/Lib/site-packages/cv2
にコピーします。できます。
私は同じ問題を抱えていました。これが私がしたことです:
pywin32モジュールをアンインストールしました。アンインストールするには、コマンドプロンプトで次のコマンドを実行します。
pip uninstall pywin32
その後、pywin32を再インストールしました。インストールするには、pywin32ホイールファイルと同じディレクトリにあるコマンドプロンプトを開きます。その後、以下のコマンドを実行してください。
pip install <Name of the wheel file with extension>
ホイールファイルは次のようになります。piwin32-XXX-cpXX-one-win32.whl
それは私にとって問題を解決します。試してみるのもいいかもしれません。それがあなたにとってもうまくいくことを願っています。
私にとって問題なのは、同じEclipseプロジェクトで異なるバージョンのPythonを使用していたことです。私の設定はプロジェクトプロパティと実行設定のPythonと一致していませんバージョン.
プロジェクト>プロパティ> PyDevでは、私はインタプリタをPython2.7.11に設定しました。
Run Configurations> Interpreterでは、Default Interpreterを使用していました。これをPython 2.7.11に変更することで問題は解決しました。
32ビットWindowsインストーラーを使用して私のシステムに異なるバージョンの2.7.xのPythonをアンインストールし、再インストールしたときにも同じ問題に直面しました。私はほとんどのimportステートメントで同じエラーを受け取りました。私は新しくインストールしたPythonをアンインストールし、64ビットのWindowsインストーラーをダウンロードし、そして再びPythonを再インストールしました。これがお役に立てば幸いです。
最初に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
それは非常に単純な解決策を持っています。 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
を配置してください。