Skip to content
Claude edited this page Sep 18, 2026 · 2 revisions

❓ FAQ

Реальные проблемы, с которыми уже столкнулись при разборе и обкатке этого репозитория — не гипотетические, а те, что либо уже случились и исправлены, либо обязательно всплывут, если что-то настроено не по инструкции.


📦 Установка

pip install -r requirements.txt падает с ошибкой по python-jose

Если видите что-то вроде Could not find a version that satisfies the requirement python-jose==3.3.4 — у вас старая копия репозитория. В requirements.txt раньше была зафиксирована версия, которой не существует на PyPI. Сделайте git pull origin main, чтобы подтянуть исправление, и переустановите зависимости.

cp: .env.example: No such file or directory

Аналогично — старая копия репозитория, файла ещё не было. git pull origin main и повторите шаг из Installation Setup.

ModuleNotFoundError, хотя всё установлено

Если ошибка про модуль внутри modules/ (например, что-то про student-portal) — тоже признак устаревшей копии: раньше папки назывались через дефис (student-portal), а дефис недопустим в имени Python-пакета. Сейчас они называются через подчёркивание (student_portal, teacher_portal, admin_panel). git pull origin main.

flake8 . показывает много предупреждений сразу после клонирования

Если вы аккуратно склонировали main и всё равно видите десятки предупреждений в файлах, которые ещё не трогали — сначала проверьте, что вы не в старой ветке/копии (см. пункты выше). В актуальном main flake8 . должен проходить чисто.


🐍 Backend

sqlite3.OperationalError: no such table: ...

Почти всегда одна из двух причин:

  1. Вы не запускали python main.py init (или запускали, но потом удалили college.db) — запустите python main.py init заново.
  2. Вы добавили новую модель в models.py своего модуля, но ещё не подключили роутер модуля в core/api.py. init_db() находит модели через core/api.py (импорт роутера тянет за собой импорт модели) — без этой строчки таблица не создастся. См. docs/architecture.md.

sqlalchemy.exc.InvalidRequestError: ... Could not determine join condition ...

Возникает, если у вас в одной модели два внешних ключа на одну и ту же таблицу (например, student_id и graded_by, оба ссылающиеся на users.id), и вы объявили relationship(...) без уточнения. SQLAlchemy не может сам понять, через какой FK строить связь. Решение — явно указать foreign_keys:

student = relationship("User", back_populates="grades", foreign_keys=[student_id])

(мы сами наступили на эту ошибку в core/models.py при первой обкатке — она там уже исправлена, но если увидите такую же в своей модели, лечится так же).

python main.py run запустился, но ничего не отвечает / зависает

Проверьте, что вы не запустили его в фоне без & и не забыли, что терминал теперь занят сервером — это нормально, uvicorn держит терминал, пока сервер работает. Открывайте API в браузере/через curl в другом окне терминала.


🖥 Frontend

Захожу на /frontend/<модуль>/, получаю 404 Not Found

Значит в папке frontend/<модуль>/ нет файла index.html — раздача через StaticFiles(html=True) автоматически отдаёт index.html только если он там есть. Создайте его.

fetch() не может достучаться до API — ошибка в консоли браузера про CORS

Если вы открываете страницу через http://127.0.0.1:8000/frontend/<модуль>/ (то есть страницу отдаёт тот же backend) — CORS вообще не должен встать на пути, это тот же origin. Если ошибка всё же есть — проверьте, что сервер запущен именно через python main.py run (а не через какой-то другой способ), и что путь в fetch() начинается с /api/v1/... (относительный, без http:// и порта).

Если вы намеренно открываете index.html напрямую как файл (file://...) или через отдельный dev-сервер на другом порту — CORS в core/api.py уже включён (allow_origins=["*"]), так что запросы должны проходить, но некоторые браузеры особым образом трактуют origin null у file:// — если ловите проблему именно в этом случае, проще открыть страницу через сам сервер (/frontend/...), как описано в frontend/README.md.


🔀 Git и GitHub

git push отклонён с [rejected] main -> main (non-fast-forward)

Кто-то запушил в main раньше вас (или вы вообще не должны пушить в main напрямую — см. Git-GitHub-Guide). Работайте в своей ветке <модуль>-backend/... или <модуль>-frontend/..., а в main попадайте только через Pull Request.

CI (pytest/flake8) красный в моём PR

Откройте вкладку Checks в PR, разверните упавший шаг — там будет конкретная ошибка (либо тест не прошёл, либо flake8 указывает файл и строку). Почините локально (pytest, flake8 . перед пушем — тогда таких сюрпризов в PR не будет), закоммитьте и запушьте в ту же ветку — PR обновится и CI перезапустится сам.


Не нашли свой вопрос?

  1. Проверьте Installation Setup (раздел «Частые проблемы») и Git-GitHub-Guide.
  2. Создайте Issue с описанием проблемы (команда, шаги воспроизведения, текст ошибки целиком).
  3. Обратитесь к преподавателю.

Clone this wiki locally