Практика: верните файлам порядок
Получаем тот же проект без структуры. Собираем его самостоятельно и проверяем результат.
Вам прислали файлы одним архивом
Коллега прислал Student Tools, но потерял структуру и назвал файлы по-своему. Ваша задача — восстановить проект по ответственности кода. Формулы уже готовы; импортам в точке запуска нужна правильная структура папок.
↓Скачать практикуZIP · внутри папки python/ и go/, в каждой пять файлов и заданиеВ архиве две папки: python/ и go/ — возьмите свою. Работайте в новой папке student-tools, чтобы не затереть разобранный пример. Сначала прочитайте каждый файл, потом переносите.
Не пытайтесь запускать запуск final.py до раскладки: импорты в нём рассчитаны на готовую структуру пакетов.

Сверху содержимое архива: две папки по языкам, внутри python — пять файлов проекта и задание. Снизу попытка запустить точку входа до раскладки: импорт from app.services.calculator import … ищет пакет app, которого ещё нет. Чтобы ошибка ушла, нужно построить структуру папок; строки импорта при этом остаются прежними.
В архиве внутри две папки: python/ и go/ — возьмите свою. Не пытайтесь собирать запуск final.go до раскладки: импорты в нём рассчитаны на готовую структуру пакетов и на имя модуля из go.mod.
Маршрут работы
- Где
- Новая папка для практики; исходный разобранный проект сохранён отдельно.
- Действие
- Распакуйте практику, прочитайте файлы и восстановите структуру по списку ниже.
- Результат
- Получается тот же пакет Student Tools с .venv, зависимостями и документацией.
- Проверка
- Запуск даёт 4.40, три теста проходят; разбор открывается по паролю после вашей попытки.
- Определите ответственность. Где вычисления, где оформление строки, где запуск, где проверки, где зависимости?
- Дайте файлам понятные имена. Используйте snake_case. Создайте app/services, app/utils и tests.
- Оформите пакеты. Добавьте пустые __init__.py в app, services и utils. Сопоставьте дерево с импортами в main.py.
- Подготовьте окружение. Создайте .venv, активируйте, проверьте sys.executable и выберите тот же Python в VS Code.
- Восстановите зависимости. Установите их из переименованного requirements.txt — вместе с Rich поставится pytest, которым запускаются тесты.
- Запустите и проверьте. Из корня выполните две команды ниже. Исправляйте причину ошибки, а не переписывайте импорты наугад.
- Подготовьте передачу. Добавьте .gitignore и README с командами, результатом и объяснением структуры.
python -m app.main
python -m pytest -vСредний результат: 4.40
3 passedМаршрут работы
- Где
- Новая папка для практики; исходный разобранный проект сохранён отдельно.
- Действие
- Распакуйте практику, прочитайте файлы и восстановите структуру по списку ниже.
- Результат
- Получается тот же модуль Student Tools с go.mod, зависимостями и документацией.
- Проверка
- Запуск даёт 4.40, тесты проходят; готовый пример открывайте после своей попытки.
- Определите ответственность. Где вычисления, где оформление строки, где запуск, где проверки, где список зависимостей?
- Дайте файлам понятные имена. В Go имена файлов пишут слитно маленькими буквами:
calculator.go,formatter.go. Создайте папкиinternal/servicesиinternal/utils. - Объявите модуль. Выполните
go mod init example.com/student-toolsили восстановите go.mod из присланного файла. Имя модуля должно совпадать с началом путей в импортах. - Проверьте объявления package. В каждом файле первая строка должна соответствовать его папке:
package services,package utils,package mainв корне. - Восстановите зависимости. Выполните
go mod tidy: команда дочитает импорты и вернёт в go.mod всё нужное. - Проверьте имена функций. Всё, что вызывается из другого пакета, должно начинаться с заглавной буквы:
CalculateAverage,FormatAverage. - Соберите и проверьте. Из корня выполните три команды ниже. Исправляйте причину ошибки, а не переписывайте импорты наугад.
- Подготовьте передачу. Добавьте .gitignore и README с командами, результатом и объяснением структуры.
go build ./...
go run .
go test ./... -vСредний результат: 4.40
--- PASS: TestCalculateAverage (0.00s)
--- PASS: TestCalculateAverageEmpty (0.00s)
ok example.com/student-tools/internal/servicesМини-тренажёр перед раскладкой
Выберите место для каждого файла. Это проверка понимания; саму практику нужно выполнить в VS Code.
Если не запускается
No module named rich
Проверьте sys.executable и python -m pip show rich. Установите зависимости в Python, которым запускаете программу.
No module named app
Терминал должен быть в папке над app. Проверьте, что app не оказался внутри второй вложенной student-tools. Запуск: python -m app.main.
Cannot import name или partially initialized module
Проверьте имя функции, содержимое файла и циклические импорты. calculator и formatter не должны импортировать main.
Тесты не найдены: collected 0 items
Убедитесь, что файл называется test_calculator.py, лежит в папке tests, а имена функций внутри начинаются с test_. Ноль собранных тестов не подтверждает готовность работы.
Python не найден / venv не создаётся
На Windows проверьте py --version, на macOS/Linux — python3 --version. Если Python не установлен, сначала установите его. На некоторых Linux-системах компонент venv ставится отдельно; следуйте сообщению системы или обратитесь к преподавателю.
Если не собирается
go.mod file not found in current directory or any parent directory
Терминал находится вне модуля или go mod init не выполнялся. Перейдите в папку, где лежит go.mod, и повторите команду. Проверьте, что проект не оказался внутри второй вложенной папки student-tools.
no required module provides package github.com/fatih/color
Импорт в коде есть, а записи в go.mod нет. Выполните go mod tidy: команда прочитает импорты и добавит нужное. Если ошибка осталась, проверьте написание пути — он должен точно совпадать с адресом репозитория, включая регистр.
found packages services and calculator in одной папке
В одной папке лежат файлы с разными объявлениями package. Приведите первую строку всех файлов папки к одному имени — тому, которое совпадает с именем папки.
undefined: services.calculateAverage
Функция названа со строчной буквы, поэтому вне своего пакета она не существует. Переименуйте её в CalculateAverage и исправьте вызов. Та же ошибка возникает, если функция лежит в другой папке, чем вы думаете.
imported and not used: "fmt"
В Go неиспользованный импорт — ошибка компиляции, а не замечание. Удалите лишнюю строку импорта или воспользуйтесь именем из этого пакета. Расширение Go в VS Code убирает такие импорты само при сохранении файла.
import cycle not allowed
Два пакета импортируют друг друга. Проверьте, не появился ли в services или utils импорт пакета main. Данные передают аргументами, результат возвращают через return; обратный импорт для этого не нужен.
Тесты не найдены: [no test files]
Файл обязан заканчиваться на _test.go, а функция — начинаться с Test и принимать *testing.T. Строки no test files не являются ошибкой, но и подтверждением готовности тоже: ищите в выводе PASS и ok.
command not found: go
Go не установлен или не попал в PATH. Установите его с go.dev/dl, затем закройте и заново откройте терминал VS Code: переменные окружения читаются при его запуске.
Сверка после собственной попытки
Разбор раскладки и готовый пример закрыты паролем. Пароль называет преподаватель, когда вы собрали проект сами и показали запуск. До этого момента сверять нечего: смысл работы в том, чтобы восстановить структуру по импортам.
Соответствие файлов
СЧИТАТЬ.py → app/services/calculator.py
красивый текст.py → app/utils/formatter.py
запуск final.py → app/main.py
проверка.py → tests/test_calculator.py
библиотеки.txt → requirements.txt
СЧИТАТЬ.go → internal/services/calculator.go
красивый текст.go → internal/utils/formatter.go
запуск final.go → main.go
проверка.go → internal/services/calculator_test.go
библиотеки.txt → go.mod (восстанавливается командой go mod tidy)
Сравнивайте не только папки: проверьте команды и результат. В готовом архиве нет .venv; создайте её самостоятельно по README.
Сравнивайте не только папки: проверьте команды и результат. В готовом архиве нет собранного бинарника; получите его сами командой go build по README.
Документация к теме
Go: организация кода · Go: добавляем тест · Go: справочник по модулям
Python: venv · Python: модули и пакеты · VS Code: Python environments · pip freeze