#python #django #pythonanywhere
Вопрос:
Я много исследовал и обнаружил, что это очень распространенный вопрос. Но дело в том, что я считаю, что каким-то образом pythonanywhere не может обнаружить мой settings.py
файл. Более того, я сверился с каталогом файлов настроек, и это тот же путь, который я ввел в файл WSGI. Я также установил необходимые файлы pip, но все равно получаю те же ошибки.
Error running WSGI application
ModuleNotFoundError: No module named 'widget_tweaks'
File "/var/www/ewallet_pythonanywhere_com_wsgi.py", line 33, in <module>
application = get_wsgi_application()
File "/home/ewallet/.virtualenvs/myenv/lib/python3.7/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
django.setup(set_prefix=False)
File "/home/ewallet/.virtualenvs/myenv/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/ewallet/.virtualenvs/myenv/lib/python3.7/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "/home/ewallet/.virtualenvs/myenv/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
module = import_module(entry)
Вот это wsgi.py
import os
import sys
path = '/home/ewallet/E-wallet/ewallet/ewallet/'
if path not in sys.path:
sys.path.append(path)
from django.core.wsgi import get_wsgi_application
os.environ['DJANGO_SETTINGS_MODULE'] = 'ewallet.settings'
application = get_wsgi_application()
Вот изображение каталога
Пожалуйста, помогите мне найти ошибку здесь. Спасибо
Комментарии:
1. ошибка не в том, что pythonanywhere не может обнаружить ваш settings.py ошибка файла возникает из-за того, что вы забыли установить пакет с именем django-widget-tweaks запустите эту команду в своем pythonanywhere bash
pip install django-widget-tweaks
и перезапустите веб-приложение2. Привет, @AnkitTiwari, как я уже упоминал, «Я также установил необходимые файлы pip, но все равно получаю те же ошибки». так что да, я установил все необходимые пипсы.
3. Привет @Toufiqur Рахман, чем это может быть старая ошибка, перейдите в журнал ошибок и проверьте внизу, чтобы увидеть последнюю ошибку
4. Если ошибка такая же, чем проверка данного пакета в вашем pythonanywhere bash, выполнив эту команду
pip freeze
5. Убедитесь, что вы установили модуль для версии Python/virtualenv, которую используете для запуска кода. Видишь help.pythonanywhere.com/pages/InstallingNewModules для получения более подробной информации.
Issue description
Can’t load page on pythonanywhere always get the same error message
2020-03-09 17:58:50,262: Error running WSGI application
2020-03-09 17:58:50,277: NameError: name 'BASE_DIR' is not defined
2020-03-09 17:58:50,277: File "/var/www/hpylori_pythonanywhere_com_wsgi.py", line 15, in <module>
2020-03-09 17:58:50,277: application = get_wsgi_application()
2020-03-09 17:58:50,277:
2020-03-09 17:58:50,278: File "/home/HPylori/hpylori.pythonanywhere.com/myenv/Lib/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2020-03-09 17:58:50,278: django.setup(set_prefix=False)
2020-03-09 17:58:50,278:
2020-03-09 17:58:50,278: File "/home/HPylori/hpylori.pythonanywhere.com/myenv/Lib/site-packages/django/__init__.py", line 19, in setup
2020-03-09 17:58:50,278: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2020-03-09 17:58:50,279:
2020-03-09 17:58:50,279: File "/home/HPylori/hpylori.pythonanywhere.com/myenv/Lib/site-packages/django/conf/__init__.py", line 76, in __getattr__
2020-03-09 17:58:50,279: self._setup(name)
2020-03-09 17:58:50,279:
2020-03-09 17:58:50,279: File "/home/HPylori/hpylori.pythonanywhere.com/myenv/Lib/site-packages/django/conf/__init__.py", line 63, in _setup
2020-03-09 17:58:50,279: self._wrapped = Settings(settings_module)
2020-03-09 17:58:50,279:
2020-03-09 17:58:50,279: File "/home/HPylori/hpylori.pythonanywhere.com/myenv/Lib/site-packages/django/conf/__init__.py", line 142, in __init__
2020-03-09 17:58:50,280: mod = importlib.import_module(self.SETTINGS_MODULE)
2020-03-09 17:58:50,280:
2020-03-09 17:58:50,280: File "/home/HPylori/hpylori.pythonanywhere.com/myenv/Lib/site-packages/isort/__init__.py", line 25, in <module>
2020-03-09 17:58:50,280: from . import settings # noqa: F401
2020-03-09 17:58:50,280:
2020-03-09 17:58:50,280: File "/home/HPylori/hpylori.pythonanywhere.com/myenv/Lib/site-packages/isort/settings.py", line 359, in <module>
2020-03-09 17:58:50,281: STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Language
Django
Operating system
Windows
hpylori.pythonanywhere.com.error.log
""" Django settings for mysite project. Generated by 'django-admin startproject' using Django 3.0.3. For more information on this file, see https://docs.djangoproject.com/en/3.0/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/3.0/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__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '************' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog.apps.BlogConfig', ] 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 = 'mysite.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], '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 = 'mysite.wsgi.application' # Database # https://docs.djangoproject.com/en/3.0/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Password validation # https://docs.djangoproject.com/en/3.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/3.0/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'America/Chicago' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.0/howto/static-files/ STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Я пытаюсь разместить свое локальное веб-приложение на pythonanywhere. [ Новичок в Django и веб-разработке ]
При запуске приложения я столкнулся со следующей ошибкой:
Error running WSGI application
2021-04-26 21:46:32,020: ModuleNotFoundError: No module named 'myapp'
2021-04-26 21:46:32,020: File "/var/www/username_pythonanywhere_com_wsgi.py", line 16, in <module>
2021-04-26 21:46:32,020: application = get_wsgi_application()
2021-04-26 21:46:32,020:
2021-04-26 21:46:32,020: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2021-04-26 21:46:32,020: django.setup(set_prefix=False)
2021-04-26 21:46:32,020:
2021-04-26 21:46:32,020: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/__init__.py", line 19, in setup
2021-04-26 21:46:32,021: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2021-04-26 21:46:32,021:
2021-04-26 21:46:32,021: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/conf/__init__.py", line 82, in __getattr__
2021-04-26 21:46:32,021: self._setup(name)
2021-04-26 21:46:32,021:
2021-04-26 21:46:32,021: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/conf/__init__.py", line 69, in _setup
2021-04-26 21:46:32,021: self._wrapped = Settings(settings_module)
2021-04-26 21:46:32,021:
2021-04-26 21:46:32,021: File "/home/username/.virtualenvs/web-virtualenv/lib/python3.8/site-packages/django/conf/__init__.py", line 170, in __init__
2021-04-26 21:46:32,021: mod = importlib.import_module(self.SETTINGS_MODULE)
Расположение файлов:
Файл settings.py находится по адресу:
/home/username/WebDev/Website/Django/MyApp/myapp/myapp
Я изменил файл ‘/var/www/username_pythonanywhere_com_wsgi.py’ как:
"""
WSGI config for myapp project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/
"""
import os
import sys
sys.path.append("/home/username/WebDev/Website/Django/MyApp/myapp")
os.environ('DJANGO_SETTINGS_MODULE', 'myapp.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Я посмотрел на аналогичный вопрос о stackoverflow, но до сих пор не могу понять, что не так с моей стороны.
Любые указатели / помощь будут оценены.
2 ответа
Лучший ответ
Ошибка устранена.
Проблема заключалась в том, что среда — это не функция, а параметр процесса, и, следовательно, ее использование, как показано ниже, было причиной ошибки.
os.environ('DJANGO_SETTINGS_MODULE', 'myapp.settings')
Я изменил код на:
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
И ошибка была решена.
0
Ishita
30 Апр 2021 в 21:59
Судя по всему, структура папок в порядке.
Что вам может потребоваться, так это добавить модуль в свой INSTALLED_APPS
в настройках.
Или, если вы получаете ошибку импорта или ошибку «модуль не найден» для чего-то, что, по вашему мнению, установлено, значит, вы, вероятно, установили его в версию Python или virtualenv, в которой не выполняется ваш код. Если это часть ваш код не найден, значит, ваш путь Python не настроен так, чтобы он видел модуль, который вы пытаетесь импортировать. См. https://help.pythonanywhere.com/pages/DebuggingImportError/.
0
TryingMahBest
27 Апр 2021 в 12:49