Pyinstaller 打包 tensorflow识别视频中的车辆程序 的错误

成功时版本:win10 python3.6 tensorflow1.4 keras2.0.8 pyinstaller3.3.1

我的pyinstaller是直接用pip安装的:

pip install pyinstaller

     如果想和我安装相同的版本可以这样:

pip install pyinstaller==3.3.1

使用时就直接一句话就可以把.py的程序打包成一个执行文件

pyinstaller -F xxx.py

这里附上官网pyinstaller

python打包不止这一种方式,还有别的,但感觉pyinstaller是最好的了。

打包方法对比:Linux+树莓派3开发总结——cx_Freeze打包Python3程序(工程文件)

错误0 编码问题:UTF-8

这个问题比较好解决!就是打包时可能报错UTF-8。

首先你要保证你程序可以运行。比如你程序中有中文,那你文件格式就应该是UTF-8。用记事本打开xx.py-->另存为-->更改格式为UTF-8

其次是CMD命令行窗口问题。输入chcp 65001,再打包就可以解决了。

[2018-10-22]最近发现一个新问题,我在打包完成运行exe后出现错误:

Fatal Python error: Py_Initialize: unable to load the file system codec
LookupError: unknown encoding: utf-8

Current thread 0x00001f44 (most recent call first):

思考我的打包环境,我最近去除了python环境变量,于是我将它添加回来,果然就好了!

添加方法:小笔记 给鼠标右键添加jupyter

这可能是犹豫打包时调用的资源不对,然后添加环境变量后指定了python等路径,就行了????反正就是解决了!

 

错误1 程序限制:RecursionError: maximum recursion depth exceeded

程序太多了,超过深度限制了!

解决方法:在spec文件首行加入两行代码解决

import sys
sys.setrecursionlimit(5000)

然后打包时不要打.py文件了,要打.spec。这样执行命令

pyinstaller -F xxx.spec

有关打包命令可以参考 PyInstaller用法

错误2 tensorflow版本错误:ModuleNotFoundError: No module named 'tensorflow.python._pywrap_tensorflow_internal

解决完错误1,打包生成exe后,运行exe程序发现报错误2的error。

注意:测试生成的exe时,一定要拿到一个没有安装过python、tensorflow等 环境的机器上运行测试。

如果在自己电脑上测试,可能环境没有打进exe,却可以自动通过环境变量调用本机的环境,所以这样你不知道单个exe是不是真的能运行。

错误2,参考了将Python写的tensorflow代码文件打包为exe趟坑记录,恩!应该是tensorflow版本问题了

我之前用的tensorflow1.7,卸载!更换了tensorflow1.4。顺便说一下卸载安装命令

#卸载
pip uninstaller tensorflow
#指定版本安装
pip installer tensorflow==1.4

OK!!!!  NICE!!! 打包之后竟然没有报错了。

错误3:cv2.VideoCapture载入视频问题opencv_ffmpeg341_64.dll

这个就不比较蛋疼了,因为我遇到这个问题时,不管是打包过程还是运行exe过程,都没有任何报错。这让我也郁闷,打包成功了,还不能运行???

我没用编译器写程序,也没法调试。然后我在程序响应语句后加上print(),看是运行到哪里就中断执行了。最后我定位到cv2.VideoCapture(path_vedio)。我用opencv打开一个avi的视频。于是我想到之前写程序时貌似遇到过类似的问题,要安装ffmpeg。

于是我参考了pyinstaller打包python+opencv 无法在别人电脑上正常运行 问题所在:opencv_ffmpeg341_64.dll

在程序首行添加了下面语句

import ctypes

try:
    temp=ctypes.windll.LoadLibrary( 'opencv_ffmpeg341_64.dll' )

except:
    pass

opencv_ffmpeg341_64.dll是我从 用VS配置opencv时的opencv库里找的。拷贝到打包的spec同目录下。

打包!OK!解决!

最后吐槽一下,python打包真麻烦,exe又很大,运行起来又很慢!关键是,你写程序直接用个import就导入包了。你也不知道程序又调用了哪些dll,结果打包时pyinstaller找不到,就不成功。其实我打包过程的log日志中依然有很多

43955 WARNING: lib not found: pgf90.dll dependency of f:\software\anaconda\Library\bin\mkl_pgi_thread.dll

这样的话。但是我生成的exe拿到别人电脑里能运行就没解决。

用pyinstaller遇到很多错误,可能也不止这点了。如果有人有相关问题可以问我,如果着急,可以通过扫描勾引我的注意!嘿嘿嘿!

你可能感兴趣的:(图像,TensorFlow,深度学习)