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

运行Django项目manage.py报错ValueError:源码字符串含空字节求助

Django运行manage.py报错:ValueError: source code string cannot contain null bytes 排查

运行manage.py时始终触发以下错误:

main()
  File "/storage/emulated/0/django/twitter/manage.py", line 21, in main
    execute_from_command_line(sys.argv)
  File "/data/data/com.termux/files/home/my_venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 425, in execute_from_command_line
    utility.execute()
  File "/data/data/com.termux/files/home/my_venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 369, in execute
    settings.INSTALLED_APPS
  File "/data/data/com.termux/files/home/my_venv/lib/python3.10/site-packages/django/conf/__init__.py", line 84, in __getattr__
    self._setup(name)
  File "/data/data/com.termux/files/home/my_venv/lib/python3.10/site-packages/django/conf/__init__.py", line 71, in _setup
    self._wrapped = Settings(settings_module)
  File "/data/data/com.termux/files/home/my_venv/lib/python3.10/site-packages/django/conf/__init__.py", line 179, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/data/data/com.termux/files/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 879, in exec_module
  File "<frozen importlib._bootstrap_external>", line 1017, in get_code
  File "<frozen importlib._bootstrap_external>", line 947, in source_to_code
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
ValueError: source code string cannot contain null bytes

同一虚拟环境下其他Django项目运行正常,仅当前项目出问题,已尝试多种网上方案无效,现提供项目的settings.py和manage.py内容:

原settings.py内容

"""
Django settings for fatwa project.

Generated by 'django-admin startproject' using Django 4.0.2.

For more information on this file, see
https://docs.djangoproject.com/en/4.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.0/ref/settings/
"""

from pathlib import Path
from decouple import config
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

#ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['','192.168.43.1']

#SECRET_KEY=config('my_key')
SECRET_KEY = 'django-insecure-!ty9w7k)$02e48otuxekbx8j2805o-5wni(%ety5lycf$&qa-m'

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites', 
    'allauth', 
    'allauth.account', 
    'allauth.socialaccount', 
    'forum', 
    'ask',
    'crispy_forms', 
    'fontawesome_5',
    'hitcount', 
    'notifications', 
]

#DJANGO_NOTIFICATIONS_CONFIG = { 'USE_JSONFIELD': True}

CRISPY_TEMPLATE_PACK= 'bootstrap4'

SITE_ID=1

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'fatwa.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [str(BASE_DIR.joinpath('template'), )],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'fatwa.wsgi.application'


# Database
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


# Password validation
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/4.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/

STATIC_URL = 'static/'
STATICFILES_DIRS=(str(BASE_DIR.joinpath('static')), )

# Default primary key field type
# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

MEDIA_URL='/media/'
MEDIA_ROOT= str(BASE_DIR.joinpath('static'))
LOGIN_REDIRECT_URL='/page/home'
#LOGOUT_REDIRECt_URL='//'

AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend'] 
# EMAIL_BACKEND so allauth can proceed to send confirmation emails
# ONLY for development/testing use console 
EMAIL_BACKEND='django.core.mail.backends.console.EmailBackend'

# Custom allauth settings
# Use email as the primary identifier
#ACCOUNT_AUTHENTICATION_METHOD = 'email'
#ACCOUNT_EMAIL_REQUIRED = True

# Make email verification mandatory to avoid junk email accounts
#ACCOUNT_EMAIL_VERIFICATION = 'mandatory' 

# Eliminate need to provide username, as it's a very old practice
#ACCOUNT_USERNAME_REQUIRED = True

原manage.py内容

import os
import sys


def main():
    """Run administrative tasks."""
    try :
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'twitter.settings')
    except:
        raise ImportError('Na the problem be this')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

排查与解决

1. 核心错误:Settings模块名称不匹配

看manage.py里的配置:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'twitter.settings')

但settings.py里明确是fatwa项目:

"""
Django settings for fatwa project.
"""

这直接导致Django找不到正确的settings文件,进而触发导入错误。

修正方案:把manage.py里的'twitter.settings'改成'fatwa.settings',修正后的manage.py:

import os
import sys


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'fatwa.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

2. 检查文件是否含空字节

如果修正后仍报错,说明settings.py或其他导入的文件可能存在隐藏的空字节(文件损坏、复制粘贴时引入)。可以用以下命令检查:

grep -P '\x00' path/to/your/settings.py

如果输出内容,说明文件有问题,重新创建一个干净的settings.py,把原内容复制过去(注意不要复制特殊隐藏字符)。

3. 确认目录结构

确保项目目录结构正确:

fatwa/
├── fatwa/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── ...其他应用和文件

manage.py必须和包含settings.py的fatwa子目录在同一层级。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:45:46