因为测试环境的网络限制问题,导致无法在线安装工具代码依赖的库。因此想在开发环境上,将工具代码打包成可执行文件。
在linux下使用pyinstaller来生成可执行文件,操作很简单,pyinstaller -F loadData.py 但是执行生成的可执行文件却一直报错。
最开始报No module named providers
在python交互界面上手动import providers提示找不到providers模块。仔细看了下报错信息,发现这个模块是faker模块中引用的,在python交互界面上再次执行from faker import providers,导入模块成功。
使用pyinstaller命令提供的hidden-import选项来导入,No module named providers问题解决。
pyinstaller -F loadData.py --hidden-imort faker.providers
再次执行,又遇到新的问题,报错信息为:AttributeError:Invalid configuration for faker locale ‘en_US’
这个问题没有思路,网上看到的很多人都遇到了同样的问题,但是原因是faker的动态引用导致。当前还没有解决方法
https://github.com/joke2k/faker/issues/891
https://github.com/pyinstaller/pyinstaller/issues/3839