Приложение Django работает локально, но показывает «Unhandled Exception» на PythonAnywhere (журналы доступны)

Ссылка на видео на youtube: https://youtu.be/iJrUiem10iI

Я разработал Django-приложение, которое включает в себя такие функции, как загрузка видео с YouTube (с помощью yt-dlp) и потенциальное преобразование форматов файлов.

Проблема:

Приложение прекрасно работает на моей локальной машине с помощью python manage.py runserver. Я могу получить доступ к представлениям, например, по адресу http://127.0.0.1:8000/converter/, и функциональность работает так, как ожидалось.

Однако после развертывания приложения на PythonAnywhere (используя бесплатный уровень) я столкнулся с ошибкой. Когда я пытаюсь получить доступ к своему сайту по адресу https://kristjan.pythonanywhere.com/ или конкретному URL-адресу приложения https://kristjan.pythonanywhere.com/converter/, я получаю общую страницу ошибки PythonAnywhere, в которой говорится:

Что-то пошло не так :-(

)

При попытке загрузить этот сайт что-то пошло не так; пожалуйста, повторите попытку позже.

Код ошибки: Unhandled Exception

Самостоятельное примечание: На странице ошибки даются ссылки на журналы, которые должны содержать конкретную обратную связь.

Что я сделал и проверил:

Локальный сервер: Убедились, что приложение корректно работает локально через runserver. URL http://127.0.0.1:8000/converter/ загружает правильный шаблон index.html.

Виртуальное окружение: Создал виртуальную среду на PythonAnywhere по адресу /home/Kristjan/.virtualenvs/djangoappvirtualenv. Я активировал эту виртуальную среду и установил все необходимые пакеты (Django, yt-dlp и т.д., максимально соответствующие моему локальному окружению) с помощью pip install -r requirements.txt (или по отдельности) в консоли PythonAnywhere.

Настройка базы данных:

Настроил параметр DATABASES по умолчанию в settings.py на использование стандартного файла db.sqlite3, расположенного в каталоге моего проекта (/home/Kristjan/djangoapp/db.sqlite3).

Успешно запустили python manage.py migrate в консоли PythonAnywhere (при активной virtualenv), чтобы инициализировать схему базы данных.

PythonAnywhere Web Tab Configuration: Исходный код: Установите значение /home/Kristjan/djangoapp (где находятся мои директории manage.py и project/app).

Рабочий каталог: Установлено значение /home/Kristjan/. (Может ли это несоответствие с каталогом исходного кода быть проблемой?)

Файл конфигурацииWSGI: Путь - /var/www/kristjan_pythonanywhere_com_wsgi.py. Содержимое проверено (см. ниже).

Virtualenv: Корректно связано с /home/Kristjan/.virtualenvs/djangoappvirtualenv.

Статические файлы: Сопоставления для /static/ и /media/ настроены так, чтобы указывать на мою структуру каталогов /home/Kristjan/djangoapp/.

WSGI-файл (/var/www/kristjan_pythonanywhere_com_wsgi.py):

import os
import sys

# add project directory to the sys.path
project_home = '/home/Kristjan/djangoapp' # Path to directory containing manage.py
if project_home not in sys.path:
    sys.path.insert(0, project_home)

# ensure the project's parent directory is also findable for imports if needed
# sys.path.insert(1, os.path.dirname(project_home)) # Sometimes needed depending on structure

# set environment variable for settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'djangoapp.settings' # Project is named 'djangoapp'

# serve django via WSGI
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Use code with caution.
Python
settings.py (/home/Kristjan/djangoapp/djangoapp/settings.py):

ALLOWED_HOSTS = ['kristjan.pythonanywhere.com']

DEBUG = True (Temporarily, hoping for better errors, but still get the generic page).

INSTALLED_APPS включает мое приложение „converter“.

Базы данных настроены на sqlite3, как упоминалось выше.

Конфигурация URL: Подтверждено, что основной urls.py включает в себя converter.urls по пути /converter/, а converter/urls.py определяет пути, которые показаны работающими локально. (При необходимости можно получить подробную информацию о структуре).

Структура файлов: Проверил, что структура проекта на PythonAnywhere соответствует моей локальной установке и стандартной схеме Django.

Перезагрузка веб-приложения: Несколько раз нажимали кнопку «Перезагрузить» на вкладке PythonAnywhere Web после проверки и изменения конфигурации.

Окружение:

PythonAnywhere Python: 3.10 (с веб-вкладки)

Локальная версия Django: [например, 5.1.1 - укажите свою версию]

PythonAnywhere Django Version: [Укажите версию, установленную в venv - для обеспечения совместимости]

Вопрос:

Что такое проблема, как решить проблему?

URL веб-приложения: Kristijan.pythonanywhere.com

ссылка на журналы: https://drive.google.com/drive/folders/1wg7PKjfU_jiw3U2t_hbK7E75k-OnoqiH?usp=sharing

Ошибки довольно очевидны:

2025-03-29 15:40:15,378: Ошибка при запуске приложения WSGI
2025-03-29 15:40:15,384: Ошибка ModuleNotFoundError: нет модуля с именем "YouTube Video Downloader.настройки"

Взгляните на файл kristjan_pythonanywhere_com_wsgi.py и переименуйте YouTubeVideoDownloader.settings в djangoapp.settings

Это последняя ошибка в вашем журнале ошибок:

ModuleNotFoundError: No module named 'django' 

Вы упомянули, что установили Django в свой virtualenv, но ошибка указывает на обратное. Я бы перепроверил, установлен ли он в правильном virtualenv.

Убедитесь, что вы нажали кнопку "Перезагрузить" на странице "Веб" после внесения изменений.

Вернуться на верх