出于项目要求,写的神经网络的代码需要打包成一个程序,不管放在什么电脑都能用。
搞了一天多的python打包,试了很多方法,好不容易成功打包了。为了不辜负这一天多的辛劳和痛苦,还是来总结一下。
电脑环境:
- conda 4.3.30
- python 3.6.13
- tensorflow 2.0.0
- xlwt
- xlrd
- pywin32
- pyinstaller 4.x
- gmsh 4.8.4
出现的问题:
- original_keras_version = f.attrs[‘keras_version‘].decode(‘utf8‘)
这并不是我自己编码的问题,从报错细节来看的话应该底层文件的问题,百度后发现解决方法:
pip install h5py==2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/
(出自https://blog.csdn.net/qq_41251963/article/details/110132101)
2. 打包时显示很多东西缺失,有可能是需要的东西没打包上,有可能是不需要打包的东西。
网上有人说要把所有需要的扩展包内容放到需要被打包的.py程序的同目录下,我直接把要打包的.py程序放到conda环境下“Anaconda3\envs\pack\Lib\site-packages”,其中’pack’是我自己新建的环境。
3. 这时候还有错误,PyInstallerImportError: Failed to load dynlib/dll
None.这个错误是在import gmsh的时候出现的,感觉是缺少了gmsh相关的文件,但是都放在环境下了,程序可以运行为什么还会少呢。原来在‘site-packages’中只有‘gmsh-4.9.3.dist-info’,关键库并不在这儿,搜索后找到‘gmsh-4.8.dll’文件,把它复制到‘dist\文件名’中。
即可以运行。
如果有类似的错误说明是打包的时候没有把一些需要的东西给打包进来,需要我们想办法把它加进去。
希望这对同样痛苦的大家有所帮助。