项目需要将TensorFlow2.1.0 打包成exe 可执行程序。踩过的坑太多,这里简单记录一下,本文基于的OS环境是 windows7。
这里python的版本符合 TF2.1.0工作的最低要求就行。
配置pyinstaller【关键】:现在(2020/07/02)release的pyinstaller 版本为3.6,不符合TF2.1.0的打包要求,勉强能打包也是各种问题。所以,根据pyinstaller开发者提示,我们可以用pyinstaller的开发版本解决(4.0),具体办法,大家可以参考如下链接,自行编译安装pyinstaller4.0-Dev版本,很轻松就可以搞定,请参考如下 链接:编译安装pyinstaller4.0-dev 注意这里面的pyinstaller需要安装到大家刚刚创建Anacanda虚拟环境中。安装pycharm:pycharm还是一款非常优秀的python开发工作软件,网上的资料也非常多,这里不再赘述。配置pycharm:建立pycharm工程,导入项目代码后,就需要配置环境了,将刚创建的Anacanda环境设置为你工程工作的依赖环境。 6.安装TensorFlow 2.1.0:如上面的图片所示,还是建议大家在pycharm下安装TF包以及项目需要的依赖包。 【注意此处有坑】: (1)一定要先安装 tensorflow-estimator== 2.1.0,conda终端下(请先切换到你所要工作的env)执行如下命令: conda install tensorflow-estimator==2.1.0(2)再安装tensorflow== 2.1.0:
conda install tensorflow==2.1.0简单解释下,如果先按照tensorflow== 2.1.0, conda会默认安装tensorflow-estimator== 2.2.0作为 TF2.1.0的依赖包,而这个版本的tensorflow-estimator== 2.2.0 在exe环境下是不work的。
1.准备spec:这里面的spec会import几个特殊的包,请大家注意hiddenimports字段。
# -*- mode: python -*- block_cipher = None a = Analysis(['easyai.py'], pathex=['.'], binaries=[], datas=[], hiddenimports=['pkg_resources.py2_warn','scipy.special','scipy.special.cython_special'], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, [], exclude_binaries=True, name='easyAI', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=True, icon='icon_easyai.ico') coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, name='easyAI') 打包成exe:Anaconda终端或者pycharm终端输入如下命令: 打包的过程可能会有缺失依赖包的情况,大家自行安装就可以了,打包成功后会生成exe文件:建议大家在终端执行,这样容易发现错误: 效果:
TF的版本2.1.0 打包成exe,先写到这里,作为一个记录吧,也真心希望能帮助到大家。欢迎大家留言,我会及时回复的,这个过程中也还是有很多细节限于篇幅不能详细展开。转载,请注明出处。谢谢大家。