打包人臉識別py文件經歷及一系列錯誤的解決辦法

記錄一下自己打包一個人臉識別項目的py文件的經歷吧,畢竟弄了整整一天,到處都是錯誤,下次再出現這些錯誤也能快點解決
我之後的所有命令操作都是在Anaconda對應的命令行進行的。

代碼所包含的頭文件:

import face_recognition
import cv2
import numpy as np
import os
import tkinter as tk
import easygui as g  
import time

pyinstaller安裝錯誤

首先使用的是pyinstaller,代碼是:

pip install pyinstaller

此時就出現了錯誤,應該是超時了吧,那麼解決辦法是使用國內的源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

安裝好之後打包,打包的命令是pyinstaller code.py,之後會多出來4個文件
在這裏插入圖片描述
exe文件在./dist/code文件夾下。
此時這個文件夾下有很多文件,如果想只保留exe文件,那麼命令是

pyinstall -F code.py

運行代碼選擇預測圖片時TypeError: 'NoneType’錯誤

這個程序我在Jupyter Notebook上是沒有問題的,但是寫到我自己要叫報告的文件夾中就錯誤。
我在對比兩個代碼的運行過程之後發現,是因爲選擇圖片的路徑上包含中文,將中文改成英文之後,運行代碼成功。
可能是因爲這些頭文件中有哪個不支持中文吧。

ModuleNotFoundError: No module named 'pkg_resources.py2_warn’錯誤

那麼運行的時候又出現了錯誤:ModuleNotFoundError: No module named ‘pkg_resources.py2_warn’,解決辦法:
我的路徑是:

D:\Anacoder\envs\face\Lib\site-packages\pkg_resources

然後找到
在這裏插入圖片描述
找到裏面

import(‘pkg_resources.py2_warn’)

這句話,註釋掉即可
在這裏插入圖片描述

ModuleNotFoundError: No module named 'six’錯誤

我網上搜是因爲six的版本不對的問題?
要到這個網址裏面去下載:

https://pypi.org/project/six/#modal-close

找到最新版,然後網頁拉到最下面下載後綴爲.gz格式的安裝包(windows環境)
然後我是解壓到這個目錄下:

D:\Anacoder\envs\face\Scripts

然後命令行切換到這個目錄:

D:\Anacoder\envs\face\Scripts\six-1.15.0

運行

python setup.py

這一通操作好了之後,重新打包發現還是這個錯誤,此時我纔看到,這個錯誤的上面有另一個錯誤,也就是下一個標題:

ImportError: numpy.core.multiarray failed to import錯誤

網上解決方案有很多,我都試了一下,有一種是正解:
由於我的cv2與numpy的版本不匹配,所以導致的錯誤,此時我降低numpy的版本就行了,之後又經歷了一系列錯誤,比如說超時,沒有權限什麼的,最終在命令行的代碼是這個:

pip install --default-timeout=100 -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple numpy==1.14.5 --user

那麼這一關就跨過去了,接下來的錯誤是

RuntimeError: Unable to open ./shape_predictor_68_face_landmarks.dat錯誤

這個問題是因爲pyinstall不會將.dat(甚至更多)的文件一起打包
解決方案:
直接複製粘貼未打包的文件,我這裏直接將

D:\Anacoder\envs\face\Lib\site-packages

這個目錄下的
在這裏插入圖片描述
放到打包之後與exe同級的文件目錄下面即可。

qt.qpa.plugin: Could not find the Qt platform plugin “windows” in “” 錯誤

唉我都有點累了
這是因爲我用到了有關windows界面的函數,但是沒有引用PyQt的platform文件夾下的內容。
我搜索plugins
然後找到的路徑是

D:\Anacoder\envs\face\Library\plugins

找到文件,但是加了個s?
在這裏插入圖片描述
看看裏面的內容
在這裏插入圖片描述
有這個,那就好了,我將platforms文件夾複製到打包好後與exe同級的文件夾目錄下。
那麼這個問題就解決了。

總結

其實一開始做到錯誤’six’模塊找不到的時候我心態就崩了,畢竟它的問題是由於另一個我沒看到的錯誤導致的,所以網上的解決辦法都無效,周圍也找不到可以幫我解決問題的人。怎麼辦?我不知道該怎麼辦。
還好這時候是晚上10點多,我在找不到辦法之後,選擇先去做別的事情,比如洗漱,刷最右什麼的。
在第二天我弄了一個小時左右的時候,那時候我內心已經沒有感覺了,畢竟這個人工智能作業已經搞了我一個星期,從一開始的什麼都不會,在做的時候走了很多彎路,包括做完了之後發現效果不行重新選擇算法。
第一次打包py文件,別的同學20分鐘搞定,而且沒出現任何錯誤,一開始我也是挺焦急的,但是沒用,作爲一個ACMer就是要學會耐心,所以我花了一天的時間把它打包好。
好像其實也沒什麼感想,在發現最終exe文件能用的時候,其實也就開心了一下,然後就抓緊時間發給老師了,沒有啥感jio,畢竟
我女朋友催我去喫飯了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章