HTML Diff
0 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>При организации проекта с несколькими каталогами и модулями в Python не получается использовать относительные импорты. Пробовал через sys.path, но это не помогает, а при попытке относительного импорта возникает ошибка:</p>
1 <p>При организации проекта с несколькими каталогами и модулями в Python не получается использовать относительные импорты. Пробовал через sys.path, но это не помогает, а при попытке относительного импорта возникает ошибка:</p>
2 <p>или</p>
2 <p>или</p>
3 <p>Что делать, чтобы модули из соседних папок корректно импортировались?</p>
3 <p>Что делать, чтобы модули из соседних папок корректно импортировались?</p>
4 <h2>Ответы</h2>
4 <h2>Ответы</h2>
5 - <p>0</p>
 
6 <p>В Python относительные импорты работают только внутри<strong>пакетов</strong>, то есть директорий с файлом __init__.py, и когда модуль запускается как часть пакета. Если запустить отдельный скрипт напрямую (python module.py), относительные импорты не сработают.</p>
5 <p>В Python относительные импорты работают только внутри<strong>пакетов</strong>, то есть директорий с файлом __init__.py, и когда модуль запускается как часть пакета. Если запустить отдельный скрипт напрямую (python module.py), относительные импорты не сработают.</p>
7 <ol><li><strong>Структура проекта</strong>должна быть пакетной:</li>
6 <ol><li><strong>Структура проекта</strong>должна быть пакетной:</li>
8 </ol><ol><li><strong>Относительные импорты</strong>пишутся внутри пакетов:</li>
7 </ol><ol><li><strong>Относительные импорты</strong>пишутся внутри пакетов:</li>
9 </ol><ol><li><strong>Запуск через пакет</strong>:</li>
8 </ol><ol><li><strong>Запуск через пакет</strong>:</li>
10 </ol><p>или запускать скрипт из корня проекта (project/) так, чтобы Python видел пакеты.</p>
9 </ol><p>или запускать скрипт из корня проекта (project/) так, чтобы Python видел пакеты.</p>
11 <ol><li><strong>Избегать изменения sys.path</strong>- это считается плохой практикой и может привести к непредсказуемым ошибкам.</li>
10 <ol><li><strong>Избегать изменения sys.path</strong>- это считается плохой практикой и может привести к непредсказуемым ошибкам.</li>
12 </ol><p>Замечание: иногда IDE вроде PyCharm корректно подхватывают пути пакетов, а VS Code нет. Всегда проверяйте запуск из командной строки с правильным рабочим каталогом.</p>
11 </ol><p>Замечание: иногда IDE вроде PyCharm корректно подхватывают пути пакетов, а VS Code нет. Всегда проверяйте запуск из командной строки с правильным рабочим каталогом.</p>