You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行python manage.py makemigrations时遇SyntaxError空字节错误求助

解决Django中makemigrations出现的SyntaxError: source code string cannot contain null bytes错误

问题根源

这个错误的直接原因是你的Python源文件(尤其是通过inspectdb生成的外部models.py)中包含了空字节(null bytes),Python解释器无法解析这类非法字符,通常是重定向输出生成文件时的编码异常导致的。

修复步骤

  1. 定位问题文件
    优先检查通过以下命令生成的外部models.py:

    python manage.py inspectdb > models.py
    

    报错栈显示模型导入阶段出错,该文件是最可能的问题源。

  2. 清除空字节

    • 用VS Code、Notepad++等支持显示隐藏字符的编辑器打开文件,手动查找并删除标记为NUL的空字节;
    • 若手动定位困难,用命令行工具批量清除:
      Windows(PowerShell):
      (Get-Content .\models.py) -replace "`0", "" | Set-Content .\models.py -Encoding UTF8
      
      Linux/macOS:
      tr -d '\000' < models.py > fixed_models.py && mv fixed_models.py models.py
      
  3. 验证文件合法性
    运行以下命令确认文件语法正常:

    python -m py_compile models.py
    

    无报错则说明文件已修复。

  4. 检查模型配置

    • 确保外部models.py所在目录已加入Python路径,或通过INSTALLED_APPS正确配置(若为独立应用);
    • 确认自定义User类已在settings.AUTH_USER_MODEL中正确指定,避免与自动生成的模型冲突。
  5. 重新执行迁移
    修复完成后,重新运行:

    python manage.py makemigrations
    

内容的提问来源于stack exchange,提问作者Eswar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:32:38