fabrizioM ответ должен заставить его работать. Вот небольшое объяснение.
Когда Python загружает файл, он выполняет поиск в файловой системе. Итак, у нас есть оператор импорта:
from ex47.game import Room
Он ищет файл ex47.py в пути поиска модулей (доступный как sys.path в коде Python). Путь поиска модулей содержит некоторые каталоги, основанные на деталях установки Python, каталоги, перечисленные в переменной среды PYTHONPATH, и содержит родительский каталог выполняемого вами сценария. Он не находит ex47.py по пути, но видит, что есть каталог с именем ex47 с __init__.py
внутри него. Затем он находит game.py в этой папке.
Проблема в том, что ваша текущая папка не находится в пути поиска модулей. Поскольку ex47_tests.py был запущен, на пути к нему есть $ cwd / tests. Вам нужен $ cwd на пути.
PYTHONPATH=. python tests/ex47_tests.py
делает именно это. Он помещает $ cwd в путь поиска модулей, чтобы Python мог найти исходные файлы.
Вы также можете сделать:
python -m tests.ex47_tests
Это будет запускать его как модуль вместо файла, в то время как он будет использовать текущий каталог в качестве пути, который он автоматически добавляет к пути поиска модулей вместо каталога, в котором находится файл.