Tôi gặp một tình huống rất giống trường hợp tại ImportError: DLL load không thành công:% 1 không phải là ứng dụng Win32 hợp lệ , nhưng câu trả lời ở đó không hoạt động với tôi.
Mã Python của tôi cho biết:
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 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 không thành công:% 1 không phải là một ứng dụng Win32 hợp lệ cho biết thêm "đường dẫn mã 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 mã nhị phân OpenCV ( C:\lib\opencv\build\x64\vc11\bin
) trong PATH của mình. Và bản cài đặt OpenCV của tôi không có bất kỳ thư mục Phát hành nào (ngoại trừ một thư mục trống trong build / java).
Bất kỳ ý tưởng về những gì đang xảy ra? Tôi có thể yêu cầu Python theo dõi chi tiết quá trình tải không? Chính xác thì DLL đang tìm kiếm gì?
Cảm ơn, Lars
BIÊN TẬP:
Tôi chỉ nhận thấy rằng, theo http://www.dependencywalker.com/ , 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 vậy, tôi có thể tìm phiên bản 64-bit của cv2.pyd ở đâu?
PYTHONPATH
từng chứa các mục mà bản cài đặt thư viện SimpleCV đã để lại ở đó. Mặc dù tôi đã gỡ cài đặt SimpleCV nhưng nó PYTHONPATH
vẫn chưa được khôi phục và đang trỏ đến một số thư mục có các phiên bản OpenCV xung đột do cài đặt SimpleCV để lại. Giải pháp: xóa PYTHONPATH
.