pyinstaller打包多个py文件仍报错ModuleNotFoundError: No module named 'xxx'

[问题现象]

使用pyinstaller A.py -p b.py -p c.py打包多个文件

或者使用main.spec在Analysis配置好各个文件打包

pyinstaller打包多个py文件仍报错ModuleNotFoundError: No module named 'xxx'

打包成功后,运行main.exe仍然报错ModuleNotFoundError: No module named 'xxx'

pyinstaller打包多个py文件仍报错ModuleNotFoundError: No module named 'xxx'

[问题原因]

 在网上查了好久好久,卡了两天。。。。。众说纷纭,还有说pyinstaller不能识别“from xxx import xxx”的语句的。。。各种被误导。。。。

后来在https://blog.csdn.net/djshichaoren/article/details/79801531

看到

pyinstaller打包多个py文件仍报错ModuleNotFoundError: No module named 'xxx'

经过检查,发现自己的目录下除了main.py,还有其他的一些py文件

于是猜想是pyinstaller在打包的时候,如果main.py的目录下还有一些平级的py的话,pyinstaller就分不清楚谁是主文件入口,谁是导入文件。所以就会出现找不到模块的错误ModuleNotFoundError: No module named 'xxx'

[解决方法]

修改一下目录结构,变成了

pyinstaller打包多个py文件仍报错ModuleNotFoundError: No module named 'xxx'

把其他py文件都放到目录下,保证项目下只有一个main.py

这样只需要输入pyinstaller main.py 就能打包多个文件,甚至是省去了-p的手动指定操作