Django使用inspectdb生成models.py后启动runserver报错ValueError求助
错误原因
你遇到的ValueError: source code string cannot contain null bytes报错,核心是生成的home/models.py文件编码异常,包含Python解释器无法识别的空字节。
该问题是Windows PowerShell的默认规则导致:在PowerShell中使用重定向符号>输出内容时,默认采用UTF-16LE编码,每两个字符之间会插入空字节,不符合Python源码要求的UTF-8编码规则。
解决方案
任选以下任意一种方法处理即可:
- 方法一:重新生成模型文件(推荐)
先删除已生成的异常home/models.py文件,在PowerShell中执行指定UTF-8编码的输出命令:python manage.py inspectdb | Out-File -FilePath home/models.py -Encoding utf8 - 方法二:手动转码现有文件
用VS Code、记事本等编辑器打开home/models.py文件,选择「另存为」,编码选项选择UTF-8(不要选择带BOM的UTF-8),覆盖原文件保存即可。 - 方法三:用CMD执行原命令
切换到Windows CMD命令行环境,执行你原本的重定向命令即可,CMD默认输出编码不会插入空字节:python manage.py inspectdb > home/models.py
验证
处理完成后重新执行python manage.py runserver即可正常启动服务。
内容的提问来源于stack exchange,提问作者An Vũ
相关产品推荐
相关产品推荐

