Это причина недоразумения:
Возникает ошибка, поскольку оператор import module_2
в module_1.py
действует так, как если бы мой рабочий каталог был pkg_1
вместо my_dir
.
Прежде всего, когда вы импортируете пакет, код в этом пакете не выполняется в другом рабочем каталоге.
Вторая ошибка в том, что рабочий каталог вообще не актуален, даже если он изменился.
Код Python организован в пакеты и модули. Интерпретатор ищет пакеты и модули в пути Python.
В показанной структуре my_dir
будет в пути Python, если вы запустите python src.py
. Тогда pkg_1
- это пакет, тогда как module_1
и module_2
- это модули. Самый простой способ импортировать module_2
- использовать абсолютный импорт:
import pkg_1.module_2
В качестве альтернативы, из другого модуля в pkg_1
вы можете использовать относительный импорт :
from . import module_2