所有方法均经过实际测试,均解决问题。
对应的环境和版本如下:
OS环境:win10
python:3.5.4
tensorflow:1.8.0-gpu
cuda:9.0
建议在使用Pyinstaller 的时候使用 :pyinstaller -D myfile.py
这样的好处就是在真的出错的时候还有挽回的空间,比如添加或者覆盖DLL等,如果单独一个EXE没法再处理。
1 “import error no module named 'tensorflow.python._pywrap_tensorflow_internal'”
打包过程没有出现问题,但是在运行的时候出现了找不到的情况。
出现该问题是因为pyinstaller找不到已经打包好的tensorflow运行环境,在dist文件夹下生成的“_pywrap_tensorflow_internal.pyd”就是它要找的环境。
解决方法:在dist文件夹下新建文件夹tensorflow,随后在其中新建python,将_pywrap_tensorflow_internal.pyd放入python文件夹中即可。
2 在运行ObjectDetection的时候如果出现“TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'”
这个问题出现时因为在tensor中没有input,本项目中出现问题是cv2,在打包的时候在dist文件夹中pyinstaller虽然复制了“opencv_ffmpeg341_64.dll”(这个ffmpegxxx_xx.dll其中xxx会随着的cv2版本变化而变化),但是这个它复制的dll是无效的。
解决办法:找到对应的cv2安装包中的dll(Lib\site-packages\cv2),复制到dist文件夹中即可。