Django项目运行报错:ModuleNotFoundError: No module named '"travelApp'求助
Django执行命令报错:
ModuleNotFoundError: No module named '"travelApp' 我用Django开发Web应用,执行py manage.py runserver和py manage.py migrate命令时,均出现以下错误:
ModuleNotFoundError: No module named '"travelApp'
travelApp是我的项目名称而非模块,不清楚为何会被当作模块处理。以下是我的settings.py文件内容:
""" Django settings for travelApp project. Generated by 'django-admin startproject' using Django 2.2. For more information on this file, see https://docs.djangoproject.com/en/2.2/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/2.2/ref/settings/ """ import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) CSRF_COOKIE_HTTPONLY = True # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'i1kf*^g1+dt*8n9bgcl80$d!970186x(x(9z2)7dfy1ynlxixn' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = ['127.0.0.1'] EMAIL_HOST_USER = "koolfacts67@gmail.com" EMAIL_HOST_PASSWORD = "m80222jms" # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'crispy_forms', 'django.contrib.staticfiles', 'sights.apps.SightsConfig', 'itineraries.apps.ItinerariesConfig', ] 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 = 'travelApp.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'static')], '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', ], }, }, ] TEMPLATE_DIRS = ( '/home/django/myproject/templates', ) WSGI_APPLICATION = 'travelApp.wsgi.application' # Database # https://docs.djangoproject.com/en/2.2/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'railway', 'USER': 'postgres', 'PASSWORD': 'dRfHDaVZymxUWsZzCRtq', 'HOST': 'containers-us-west-182.railway.app', 'PORT': '6045', } } # Password validation # https://docs.djangoproject.com/en/2.2/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/2.2/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'US/Central' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.2/howto/static-files/ STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, '/static') STATICFILES_DIRS = [os.path.join(BASE_DIR, "static/")]
问题原因及解决办法
错误信息里的"travelApp多了一个前双引号,这是核心问题——某个配置或命令里把项目名写成了带多余引号的形式,导致Django误把"travelApp当作模块名去查找。按以下步骤排查:
检查manage.py文件
打开项目根目录下的manage.py,确认其中设置DJANGO_SETTINGS_MODULE的代码没有多余引号,正确格式应该是:os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'travelApp.settings')如果这里写成了
'"travelApp.settings'之类的,把多余的引号删掉。检查启动命令
确认你执行命令时没有手动添加带错误引号的--settings参数,比如不要写成:py manage.py runserver --settings='"travelApp.settings'如果有,去掉多余的引号。
确认项目目录结构
确保项目根目录(即manage.py所在目录)下存在travelApp文件夹,且该文件夹内包含__init__.py、urls.py、wsgi.py和settings.py这几个必要文件。确认工作目录
执行命令时,必须在项目根目录下运行,不要进入travelApp子目录再执行py manage.py runserver。
内容的提问来源于stack exchange,提问作者kool
相关产品推荐
相关产品推荐

