PyInstaller打包Django报错:找不到django.contrib.messages.apps模块
解决PyInstaller打包Django应用时的
django.contrib.messages.apps找不到问题 既然你之前靠添加隐藏导入解决了django.contrib.admin.apps的问题,那这个报错完全可以用同样的思路搞定,具体操作分两种场景:
1. 直接通过PyInstaller命令行参数解决
如果平时直接用命令行打包,只需要在原有命令基础上加上--hidden-import参数,指定缺失的模块即可:
pyinstaller --hidden-import django.contrib.messages.apps your_django_script.py
这个参数的作用就是告诉PyInstaller:“把这个它自动检测不到的模块也打包进去”,和你之前解决admin模块问题的逻辑完全一致。
2. 通过.spec配置文件解决(适合复杂/重复打包场景)
如果你已经在用.spec文件管理打包配置(比如需要添加静态文件、自定义图标等),直接修改spec文件里的hiddenimports列表就行:
找到Analysis部分,把'django.contrib.messages.apps'追加到hiddenimports的数组里,比如:
a = Analysis( ['your_django_script.py'], pathex=[], binaries=[], datas=[], # 把缺失的模块添加到这里,之前加的admin模块也可以保留 hiddenimports=['django.contrib.admin.apps', 'django.contrib.messages.apps'], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, )
修改完之后,重新用spec文件打包:
pyinstaller your_django_script.spec
补充提示
如果之后再遇到类似的ModuleNotFoundError,只要是Django contrib组件下的apps模块,都可以用这个方法把对应的模块添加到hiddenimports里,PyInstaller就能正确打包这些模块了。
内容的提问来源于stack exchange,提问作者cfleming93
相关产品推荐
相关产品推荐

