Django runserver报错ValueError:源代码字符串不能包含空字节
Django启动报错:ValueError: source code string cannot contain null bytes
环境信息
- Django版本:4.1
- Python版本:3.10.6(基于Docker镜像
python:3.10.6)
报错堆栈
django shell commands Traceback (most recent call last): File "/srv/project/./manage.py", line 9, in <module> from django.core.management import execute_from_command_line File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 16, in <module> from django.apps import apps File "/usr/local/lib/python3.10/site-packages/django/apps/__init__.py", line 1, in <module> File "/usr/local/lib/python3.10/site-packages/django/apps/config.py", line 13, in <module> File "/usr/local/lib/python3.10/site-packages/django/apps/config.py", line 62, in AppConfig File "/usr/local/lib/python3.10/site-packages/django/utils/functional.py", line 27, in __init__ from django.utils.deprecation import RemovedInDjango50Warning File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 5, in <module> from asgiref.sync import sync_to_async ValueError: source code string cannot contain null bytes
解决方法
这个错误的核心是Python源文件中存在空字节(null bytes),通常由文件损坏、传输异常或镜像构建问题导致,可按以下步骤排查修复:
1. 重建依赖包
报错触发于导入asgiref.sync,大概率是依赖包文件损坏,重新安装相关依赖:
pip uninstall django asgiref -y pip install django==4.1 asgiref
如果是Docker环境,构建镜像时添加--no-cache-dir避免缓存干扰,或直接重新构建:
docker build --no-cache -t your-app-image .
2. 检查项目文件完整性
扫描项目内所有.py文件,定位包含空字节的文件:
grep -r "\x00" /srv/project/
找到异常文件后,从备份或版本控制系统中恢复正常版本。
3. 验证基础镜像完整性
拉取最新的官方Python基础镜像,避免本地镜像损坏:
docker pull python:3.10.6 --no-cache
之后重新构建应用镜像,确保构建流程无异常。
内容的提问来源于stack exchange,提问作者CurlyError
相关产品推荐
相关产品推荐

