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>