You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

部署Django应用至Heroku时遭遇Bad magic number错误求解决

解决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

火山引擎 最新活动