程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python nuitka打包的程序,提示ImportError: DLL load failed while importing cv2: 找不到指定的模塊。

編輯:Python

使用場景:

python nuitka將程序打包後,將cv2的庫文件移動至程序目錄後,在python環境中可以運行,離開python環境後提示:ImportError: DLL load failed while importing cv2: 找不到指定的模塊。

處理思路:

1 . 因為我的程序可以在python環境中運行,這說明我環境中的cv2是可以正常使用。
2. 打包後的程序在python虛擬環境中是可以運行,說明打包的程序沒有問題。
3. 打包的程序離開python虛擬環境後,提示找不到cv2的模塊,說明是cv2導入程序包導致。

因此,我只需要解決cv2引入程序包後的異常問題即可。

參考了很多網友提供的解決方案:

  1. 重新安裝cv2庫
pip uninstall opencv-python
pip uninstall opencv-contrib-python
pip install opencv-python
pip install opencv-contrib-python
  1. 在IDEA中配置將cv2所在目錄添加到環境變量中

  2. 使用 Dependency Walker,檢查cv2中文件cv2.pyd缺少的 dll 依賴文件,進行重新導入。

  3. 修改cv2文件夾下的pyd 文件名為cv2.pyd

因為我需要打包後,作為一個獨立程序提供給其他人使用,所以並不適用我的應用場景。

解決方法:

既然網友提供的方法不適用,只能根據自己的場景,找方法。
程序所在的python環境中cv2的使用是沒有問題的,如果我直接使用環境中cv2,應該就能解決我的問題。
通過pycharm,我打開cv2.__init__.py,再次跳轉至.cv2

注意,在程序運行的python虛擬環境中,跳轉成功,打開了cv2.cv2.__init__.py,而時間的cv2庫中是沒有這個文件的。


打開cv2.cv2.__init__.py所在目錄,該目錄在cv2的文件夾下是沒有的。對比一下程序運行中使用的cv2文件夾和cv2庫文件目錄中文件的差異。

  • cv2庫:
  • 程序運行的虛擬環境中的cv2文件夾:
    將環境中的cv2文件復制到程序打包的cv2庫中,對重復的內容進行覆蓋,再次運行程序。程序成功運行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved