部署Django应用至Heroku时遭遇Bad magic number错误求解决
兄弟,我之前部署Python应用到Heroku时也踩过这个坑,虽然你说本地和Heroku的Python版本都是3.6.4,但还是有几个容易忽略的点,给你逐一排查:
彻底清理本地生成的pyc文件和缓存目录
哪怕Python版本一致,本地(比如Windows)和Heroku的Linux环境生成的*.pyc文件、__pycache__目录可能存在兼容性问题。首先确保你的.gitignore文件里已经添加了这些规则:__pycache__/ *.pyc *.pyo *.pyd然后把已经提交到git仓库里的这些文件彻底移除:
git rm -r --cached __pycache__ git rm --cached *.pyc git commit -m "Remove pyc files and cache directories"之后再重新推送到Heroku。
确认Heroku使用官方Python Buildpack
有时候不小心设置了错误的buildpack会导致构建异常,执行以下命令切换到官方Python buildpack:heroku buildpacks:set heroku/python然后重新部署代码:
git push heroku main # 如果你用的是master分支就换成master清除Heroku的构建缓存,从头构建
Heroku的缓存可能残留了旧的构建文件,导致冲突。执行命令清除缓存:heroku repo:purge_cache -a 你的应用名称清除后再次推送代码,让Heroku重新安装依赖并构建应用。
检查requirements.txt的准确性
确保本地的依赖和Heroku上安装的完全一致。在本地虚拟环境里执行以下命令更新requirements.txt:pip freeze > requirements.txt检查文件里有没有本地特有的依赖(比如Windows平台专属的包),如果有就删掉,然后提交更新后的文件再部署。
排除虚拟环境目录的干扰
如果你的git仓库里不小心提交了本地的虚拟环境(比如venv/或env/目录),Heroku可能会误加载这些本地环境的文件,导致错误。确保.gitignore里添加了:venv/ env/同样用
git rm -r --cached venv移除已提交的虚拟环境目录,再提交推送。
内容的提问来源于stack exchange,提问作者syl-lo




