打包人脸识别py文件经历及一系列错误的解决办法

记录一下自己打包一个人脸识别项目的py文件的经历吧,毕竟弄了整整一天,到处都是错误,下次再出现这些错误也能快点解决
我之后的所有命令操作都是在Anaconda对应的命令行进行的。

目录

  • 代码所包含的头文件:
  • pyinstaller安装错误
  • 运行代码选择预测图片时TypeError: 'NoneType'错误
  • ModuleNotFoundError: No module named 'pkg_resources.py2_warn'错误
  • ModuleNotFoundError: No module named 'six'错误
  • ImportError: numpy.core.multiarray failed to import错误
  • RuntimeError: Unable to open ./shape_predictor_68_face_landmarks.dat错误
  • qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "" 错误
  • 总结

代码所包含的头文件:

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个文件
打包人脸识别py文件经历及一系列错误的解决办法_第1张图片
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

然后找到
打包人脸识别py文件经历及一系列错误的解决办法_第2张图片
找到里面

import(‘pkg_resources.py2_warn’)

这句话,注释掉即可
打包人脸识别py文件经历及一系列错误的解决办法_第3张图片

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

这个目录下的
打包人脸识别py文件经历及一系列错误的解决办法_第4张图片
放到打包之后与exe同级的文件目录下面即可。

qt.qpa.plugin: Could not find the Qt platform plugin “windows” in “” 错误

唉我都有点累了
这是因为我用到了有关windows界面的函数,但是没有引用PyQt的platform文件夹下的内容。
我搜索plugins
然后找到的路径是

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

找到文件,但是加了个s?
打包人脸识别py文件经历及一系列错误的解决办法_第5张图片
看看里面的内容
打包人脸识别py文件经历及一系列错误的解决办法_第6张图片
有这个,那就好了,我将platforms文件夹复制到打包好后与exe同级的文件夹目录下。
那么这个问题就解决了。

总结

其实一开始做到错误’six’模块找不到的时候我心态就崩了,毕竟它的问题是由于另一个我没看到的错误导致的,所以网上的解决办法都无效,周围也找不到可以帮我解决问题的人。怎么办?我不知道该怎么办。
还好这时候是晚上10点多,我在找不到办法之后,选择先去做别的事情,比如洗漱,刷最右什么的。
在第二天我弄了一个小时左右的时候,那时候我内心已经没有感觉了,毕竟这个人工智能作业已经搞了我一个星期,从一开始的什么都不会,在做的时候走了很多弯路,包括做完了之后发现效果不行重新选择算法。
第一次打包py文件,别的同学20分钟搞定,而且没出现任何错误,一开始我也是挺焦急的,但是没用,作为一个ACMer就是要学会耐心,所以我花了一天的时间把它打包好。
好像其实也没什么感想,在发现最终exe文件能用的时候,其实也就开心了一下,然后就抓紧时间发给老师了,没有啥感jio,毕竟
我女朋友催我去吃饭了。

你可能感兴趣的:(人工智能,错误)