ImportError: DLL load không thành công:% 1 không phải là ứng dụng Win32 hợp lệ. Nhưng DLL có ở đó


112

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\opencvtrê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.pydvà đó 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.pydtrong C:\lib\opencv\build\python\2.7là 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?


9
nhấp vào đây và tìm ra opencv 64-bit
Kill Bảng điều khiển

1
@KillConsole: cảm ơn, tôi sẽ thử. Vì gói cài đặt 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ô, điều đó đã sửa nó! Bây giờ chúng ta đang ở "ImportError: numpy.core.multiarray không nhập được", vì vậy tôi sẽ thử cùng một trang web cho numpy 64-bit. Nếu bạn đưa nhận xét của mình thành câu trả lời, tôi sẽ tán thành và chấp nhận nó.
LarsH

bạn đã sử dụng phiên bản Python nào? (không về phiên bản bộ xử lý bit)

1
@Begueradj: 2.7, nếu đó là những gì bạn đang hỏi.
LarsH

1
Tôi đã gặp vấn đề tương tự và không có giải pháp nào dưới đây giúp tôi, vì vậy hóa ra là của tôi đã PYTHONPATHtừ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ó PYTHONPATHvẫ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.
Anton Daneyko

Câu trả lời:


81

Windows Binaries không chính thức cho các gói mở rộng Python

bạn có thể tìm thấy bất kỳ con trăn nào từ đây


điều này thực sự hữu ích. Tôi không chắc chắn điều gì đã sai. Tôi đã có một phiên bản 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 cv2 thành công sau nhiều giờ vật lộn. Cảm ơn rất nhiều.
emeralddove

41

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


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

17

Chà, 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 hoạt động. Cuối cùng, tôi đã sử dụng khả năng của python để xem xét nội dung những gì đang được tải. Đối với python 2.7, điều này có nghĩa là:

import imp
imp.find_module("cv2")

Điều này đã tạo ra một tệp "cv2.pyd" hoàn toàn không mong đợi trong thư mục Anaconda DLL mà không bị chạm vào bởi nhiều lần gỡ cài đặt / cài đặt. 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 cv2.pyd đó và thử imp.find_module ("cv2") một lần nữa và python ngay lập tức tìm thấy tệp phù hợp và cv2 bắt đầu hoạt động.

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 phần nội quan python để xem tệp python đang cố gắng tải.


4
Tôi đã gặp sự cố là nó đang cố chạy một 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 điều gì đang thực sự xảy ra. Cảm ơn!
Emad Y

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

7

Trong trường hợp của tôi, tôi có python 64bit và lxml là phiên bản sai - tôi cũng nên sử dụng phiên bản x64 của nó. Tôi đã giải quyết vấn đề này bằng cách tải xuống phiên bản 64-bit của lxml tại đâ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 cho một vấn đề khó chịu.


6

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


2

Nếu hệ thống xây dựng của bạn (trong trường hợp của tôi là CMake) sao chép tệp từ <name>.dllsang <name>.pyd, bạn sẽ gặp lỗi này nếu tệp gốc thực sự không phải là 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à*.lib .

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


2

Tôi đã từng gặp vấn đề tương tự. Đây là những gì tôi đã làm:

  1. Tôi đã tải xuống tệp bánh xe pywin32 từ đây , sau đó

  2. Tôi đã gỡ cài đặt mô-đun 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ó, hãy mở Command Prompt trong cùng thư mục chứa tệp bánh xe pywin32. Sau đó thực hiện lệnh sau.

    pip install <Name of the wheel file with extension> Tệp bánh xe sẽ có dạng: piwin32-XXX-cpXX-none-win32.whl

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


2

Tôi đã sao chép cv2.pydtệp từ /opencv/build/python/2.7/x86thư mục thay vì từ /x64thư mục sang C:/Python27/Lib/site-packeges. Tôi đã làm theo phần còn lại của các hướng dẫn được cung cấp ở đây .

Do người khác thêm vào, chưa được xác minh: Tôi cũng sao chép tệp cv2.pydvào thư mục C:/Python27/Lib/site-packages/cv2. Nó hoạt động.


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 cùng một dự án Eclipse. Thiết lập của tôi không phù hợp với Thuộc tính dự án và phiên bản Python chạy cấu hình .

Trong Dự án> Thuộc tính> PyDev , tôi đã đặt Trình thông dịch thành Python2.7.11.

Trong Cấu hình Chạy> Trình thông dịch , tôi đang sử dụng Trình thông dịch mặc định. Thay đổi nó thành Python 2.7.11 đã khắc phục sự cố.


1

Tôi gặp phải vấn đề tương tự khi gỡ cài đặt và cài đặt lại phiên bản Python 2.7.x 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 câu lệnh nhập của mình. Tôi đã gỡ cài đặt Python mới được 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.


1

Vì vậy, tôi đã gặp sự cố khi cài đặt vtk trong cửa sổ (vì tôi sử dụng python 3.7 không có sẵn tệp nhị phân cho đến nay chỉ dành cho các phiên bản python cũ hơn. Pip cài đặt vtk không hoạt động)

Tôi đã viết python trong cmd của mình:

Python 3.7.3 on win32

Vì vậy, bây giờ tôi biết tôi có Python 3.7.3 runing trên 32 bit.

Sau đó, tôi đã tải xuống đúng bánh xe tại VTK ‑ 8.2.0 ‑ cp37 ‑ cp37m ‑ win32.whl

Tiếp theo, tôi lắp bánh xe đó:

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

Sau đó, tôi đã thử nghiệm nó và nó hoạt động:

python
import vtk


0

Đầu tiên tôi sao chép cv2.pydtừ /opencv/build/python/2.7/x86sang C:/Python27/Lib/site-packeges. Lỗi là

"RuntimeError: mô-đun được biên dịch dựa trên API phiên bản 9 nhưng phiên bản numpy này là 7"

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

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


0
  1. Hãy đảm bảo rằng bạn đã cài đặt phiên bản python 2.7.12 trở xuống, nếu không bạn chắc chắn sẽ gặp phải lỗi này.
  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 Microsoft Visual C ++ Compiler cho Python 2.7 là 64 bit đối với 64 bit Os hoặc 32 bit đối với 32 bit. Lưu ý: - IF ur OS là 64 bit cài đặt tất cả gói 64 bit hoặc nếu Os là 32 bit thì 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 nơi

cv2.pydtừ C:\opencv\build\python\2.7\ **x64**đếnC:\Python27\Lib\site-packages

thay vì, đặt cv2.pydtừ C:\opencv\build\python\2.7\ **x86**đếnC:\Python27\Lib\site-packages


0

Tôi gặp lỗi này khi cố gắng nhập MySQLdb.

Điều làm việc cho tôi là gỡ cài đặt Python và sau đó cài đặt lại nó.

Tôi gặp lỗi sau khi cài đặt npm ( https://www.npmjs.com/get-npm ). Một điều nó đã làm là cài đặt Python mặc dù tôi đã có nó.


0

Điều này đã làm việc cho tôi. Tôi đã thử các phương pháp khác nhau nhưng đây là giải pháp tốt nhất của tôi.

Mở dấu nhắc lệnh và gõ như sau; pip install opencv-python. (đảm bảo rằng internet của bạn đang bật). sau đó hãy thử nhập lại.


0

Cái này đã làm việc với tôi

pip install -- pywin32==227

1
Chào mừng bạn đến với Stack Overflow. Tại sao nó làm việc cho bạn? Làm ơn, bạn có thể thêm chi tiết cho câu trả lời này không?
Azametzin

-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 liệu pháp đầu tiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.