2013-09-26 37 views
87

Tôi có một tình huống rất giống với một tại ImportError: DLL load failed: %1 is not a valid Win32 application, nhưng câu trả lời không có tác dụng đối với tôi.ImportError: Tải DLL không thành công:% 1 không phải là ứng dụng Win32 hợp lệ. Nhưng của DLL là có

My mã Python nói:

import cv2 

Nhưng dòng đó ném lỗi hiển thị trong tiêu đề của câu hỏi này.

Tôi đã cài đặt OpenCV trong C:\lib\opencv trên máy 64 bit này. Tôi đang sử dụng Python 64 bit.

Biến PYTHONPATH của tôi: PYTHONPATH=C:\lib\opencv\build\python\2.7. Thư mục này chứa cv2.pyd và đó là tất cả.

Biến PATH của tôi: Path=%OPENCV_DIR%\bin;... Thư mục này chứa 39 tệp DLL chẳng hạn như opencv_core246d.dll.

OPENCV_DIR có giá trị này: OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

Giải pháp tại ImportError: DLL load failed: %1 is not a valid Win32 application nói để thêm "đường dẫn nhị phân opencv mới (C:\opencv\build\bin\Release) vào biến môi trường Windows PATH". Nhưng như được hiển thị ở trên, tôi đã có thư mục nhị phân OpenCV (C:\lib\opencv\build\x64\vc11\bin) trong PATH của tôi. Và quá trình cài đặt OpenCV của tôi không có bất kỳ thư mục Release nào (ngoại trừ một thư mục rỗng trong build/java).

Bất kỳ ý tưởng nào về những gì đang xảy ra? Tôi có thể yêu cầu Python theo dõi quá trình tải không? Chính xác những gì DLL của nó là tìm kiếm?

Cảm ơn, Lars

EDIT:

Tôi chỉ nhận thấy rằng, theo http://www.dependencywalker.com/, các cv2.pyd trong C:\lib\opencv\build\python\2.7 là 32-bit, trong khi máy và Python Tôi đang chạy là 64-bit . Có thể đó là vấn đề? Và nếu có, tôi có thể tìm phiên bản cv2.pyd 64 bit ở đâu?

+6

nhấp chuột [ở đây] (http: // www .lfd.uci.edu/~ gohlke/pythonlibs/# opencv) và tìm opencv 64 bit –

+1

@KillConsole: cảm ơn, tôi sẽ thử nó. Vì gói cài đặt mà tôi đã tải xuống có cả thư mục con x86 và x64, tôi cho rằng nó bao gồm mọi thứ cần có cho 64-bit. Rõ ràng là không. Hoan hô, đã sửa nó! Bây giờ chúng tôi đang vào "ImportError: numpy.core.multiarray không nhập được", vì vậy tôi sẽ thử cùng một trang web cho 64-bit numpy. Nếu bạn bình luận của bạn thành một câu trả lời, tôi sẽ upvote và chấp nhận nó. – LarsH

+0

phiên bản Python nào bạn đã sử dụng? (không phải trong điều khoản của phiên bản bit bộ xử lý) –

Trả lời

73

Unofficial Windows Binaries for Python Extension Packages

bạn có thể tìm thấy bất kỳ libs python từ đây

+0

điều này thực sự hữu ích. Tôi không chắc chắn những gì đã sai. Tôi đã có một phiên bản của opencv, anaconda3, python3. Đã cài đặt opencv_python-3.3.0 + contrib-cp35-cp35m-win_amd64 từ danh sách gói ở trên và đã có thể nhập thành công cv2 sau nhiều giờ đấu tranh. Cảm ơn một tấn. – emeralddove

27

Hãy kiểm tra xem phiên bản python bạn đang sử dụng cũng là 64 bit. Nếu không thì đó có thể là vấn đề. Bạn sẽ sử dụng phiên bản python 32 bit và đã cài đặt một tệp nhị phân 64 bit cho thư viện OPENCV.

+0

Như đã đề cập trong câu hỏi, tôi đã sử dụng Python 64 bit. – LarsH

6

Trong trường hợp của tôi, tôi có 64 bit python, và nó đã được lxml đó là phiên bản sai - Tôi nên có được sử dụng phiên bản x64 của đó là tốt. Tôi giải quyết này bằng cách tải về phiên bản 64-bit của lxml đây:

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

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

Đây là câu trả lời đơn giản nhất để một vấn đề bực bội.

6

Tôi vừa gặp sự cố này, nó quay lại chỉ vì tôi đang sử dụng phiên bản x64 của tệp opencv. Đã thử x86 và nó hoạt động.

2

Tôi đã sao chép cv2.pyd tệp từ /opencv/build/python/2.7/x86 thư mục thay vì từ /x64 thư mục thành C:/Python27/Lib/site-packeges.Tôi đã làm theo các hướng dẫn còn lại được cung cấp here.

1

Đối với tôi vấn đề là tôi đang sử dụng các phiên bản Python khác nhau trong dự án cùng một Eclipse. Thiết lập của tôi không nhất quán với các thuộc tính dự án thuộc tính dự ánchạy cấu hình Python.

Trong Project> Properties> PyDev, tôi đã đặt bộ thông dịch thành Python2.7.11.

Trong Chạy cấu hình> Phiên dịch, Tôi đã sử dụng Trình thông dịch mặc định. Thay đổi nó sang Python 2.7.11 đã khắc phục được sự cố.

9

Ồ, tôi đã tìm thấy một trường hợp khác cho vấn đề này. Không có điều nào ở trên hiệu quả. Cuối cùng tôi đã sử dụng khả năng của python để quan sát những gì đang được nạp. Đối với python 2.7 này có nghĩa là:

import imp 
imp.find_module("cv2") 

này bật lên một hoàn toàn bất ngờ "cv2.pyd" tập tin trong một thư mục Anaconda DLL mà không được chạm vào bởi nhiều uninstall/cài đặt nỗ lực. Python đã tìm kiếm đầu tiên và không tìm thấy cài đặt tốt của tôi. Tôi đã xóa tập tin cv2.pyd đó và cố gắng imp.find_module ("cv2") một lần nữa và python ngay lập tức tìm thấy đúng tập tin và cv2 bắt đầu làm việc.

Vì vậy, nếu không có giải pháp nào khác phù hợp với bạn, hãy đảm bảo bạn sử dụng nội dung python để xem tệp python nào đang cố tải.

+1

Tôi gặp sự cố khi cố gắng chạy phiên bản của tệp trong một thư mục khác hoàn toàn. Giải pháp này ở đây đã giúp tôi tìm ra những gì đã thực sự xảy ra.Cảm ơn! –

+0

Đây là một câu trả lời tuyệt vời, cảm ơn! Tôi gặp vấn đề với PyDev, nơi nó đang tải "ctypes" từ một cài đặt không tương thích của python, và tôi nhận ra rằng tôi cần thiết để thiết lập trình thông dịch của tôi để sử dụng WinPython, nó đã sửa nó. – eacousineau

-2

Tôi đã tìm thấy giải pháp, có thể bạn có thể thử sử dụng cửa sổ cmd thay vì cửa sổ nhắc anaconda để bắt đầu thử nghiệm sơ bộ đầu tiên của bạn.

0

Trước tiên, tôi đã sao chép cv2.pyd từ /opencv/build/python/2.7/x86 đến C:/Python27/Lib/site-packeges. Lỗi này là

"RuntimeError: module compiled against API version 9 but this version of numpy is 7"

Sau đó, tôi đã cài đặt numpy-1.8.0-win32-superpack-python2.7.exe và opencv hoạt động tốt.

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

Nếu xây dựng hệ thống của bạn (CMake trong trường hợp của tôi) sao chép tập tin <name>.dll-<name>.pyd, bạn sẽ nhận được lỗi này nếu các tập tin ban đầu là không thực sự là một dll. Trong trường hợp của tôi, việc xây dựng các thư viện được chia sẻ đã bị tắt, vì vậy tệp cơ bản thực sự là một *.lib.

Tôi đã phát hiện ra lỗi này bằng cách tải tệp pyd trong DependencyWalker và thấy rằng nó không hợp lệ.

1

Tôi gặp sự cố tương tự. Dưới đây là những gì tôi đã làm:

  1. Tôi đã tải về tập tin Wheel PyWin32 từ here, sau đó

  2. tôi gỡ bỏ cài đặt các module PyWin32. Để gỡ cài đặt, hãy thực hiện lệnh sau trong Command Prompt.

    pip uninstall pywin32

  3. Sau đó, tôi cài đặt lại PyWin32.Để cài đặt nó, mở Command Prompt trong cùng thư mục chứa tập tin bánh xe pywin32. Sau đó thực hiện lệnh sau.

    pip install <Name of the wheel file with extension> tập tin Wheel sẽ như thế nào: piwin32-XXX-cpXX-none-win32.whl

Nó solvs vấn đề đối với tôi. Bạn cũng có thể muốn thử. Hy vọng nó làm việc cho bạn là tốt.

1

Tôi gặp phải sự cố tương tự khi tôi gỡ cài đặt và cài đặt lại phiên bản 2.7.x Python khác trên hệ thống của mình bằng Trình cài đặt Windows 32 bit. Tôi đã gặp lỗi tương tự trên hầu hết các báo cáo nhập của tôi. Tôi đã gỡ cài đặt Python mới cài đặt và tải xuống trình cài đặt Windows 64 bit và cài đặt lại Python một lần nữa và nó hoạt động. Hy vọng điều này sẽ giúp bạn.

0

Bạn có thể cài đặt opencv từ các trang web official hoặc unofficial.

Tham khảo this câu hỏi và this vấn đề nếu bạn đang sử dụng Anaconda.

0
  1. Hãy đảm bảo rằng bạn đã cài đặt trăn 2.7.12 hoặc phiên bản thấp hơn nếu không bạn sẽ nhận được lỗi này chắc chắn.
  2. Đảm bảo máy khách Oracle được cài đặt 64 bit nếu hệ điều hành là 64 bit.
  3. Đảm bảo Trình biên dịch Microsoft Visual C++ cho Python 2.7 là 64 bit cho bit 64 bit Os hoặc 32 bit cho 32 bit. Lưu ý: - NẾU hệ điều hành ur là 64 bit cài đặt tất cả các gói 64 bit hoặc nếu Os là 32 bit cài đặt gói 32 bit.
0

Nó có một giải pháp rất đơn giản Sau khi cài đặt opencv ... bạn đặt cv2.pyd từ C: \ OpenCV \ xây dựng \ python \ 2.7 \ x64 vào C: \ Python27 \ Lib \ web- gói

thay vào đó, nơi cv2.pyd từ C: \ openCV \ xây dựng \ python \ 2.7 \ x86 vào C: \ Python27 \ Lib \ site-packages

Các vấn đề liên quan