最近做项目需要将python的程序打包成exe供C#调用,所以学习了一下python打包的方法。看了很多博文,大家都说pyinstaller打包python程序更胜一筹,所以就选择了这个。
安装pyinstaller:直接activate tensorflow虚拟环境。pip install pyinstaller。安装完成后,直接进入需要打包的py文件的文件夹下:
pyinstaller -F ***.py
打包过程中遇到的问题
1、pyinstaller打包python的程序,遇到的问题:pyinstaller3.5 打包 WARNING: Cannot read QLibraryInfo… json.decoder.JSONDecodeError。无奈,网上也没有解决方案,可能是我的环境配置出现问题,把整个tensorflow虚拟环境删除,重新安装。然后重新安装pyinstaller,然后打包成功。
2、pyinstaller打包的tensorflow程序,在没有tensorflow环境的机器上运行报错:ModuleNotFoundError: No module named ‘tensorflow.python._pywrap_tensorflow_internal’ 我猜测应该是tensorflow的环境没有打包进去。参考这个博客:https://www.jianshu.com/p/b0e3a74ca97b,博客说这个问题在tensorflow1.7版本以上会出现这个问题,我的机器是tensorflow1.13,所以就把找了一台tensorflow1.6的机器,打包完成后,到没有tensorflow环境的机器上测试,问题解决。这里注意的是打包完的exe一定要到无tensorflow环境的机器上测试,否则根本测不出来问题。