Сейчас я работаю над личным проектом на Python, где у меня есть много разных пакетов для организации вместе разных частей одинакового кода. Я столкнулся с ситуацией, когда мне нужно получить доступ к фрагменту кода из другого каталога, но я столкнулся с ошибками при попытке запустить код с терминала. (Командная строка Windows)
Вот более простой пример проблемы, с которой я столкнулся:
Код: Выделить всё
parentPackage/
__init__.py
pack1/
__init__.py
file1.py
pack2/
__init__.py
file2.py
file3.py
Файлы 1 и 2 содержат функции foo() и foo2() соответственно, и мне нужно получить доступ к обеим функциям внутри файла 3.
Используя PyCharm, я могу отлично запустить файл 3, используя следующий импорт:
Код: Выделить всё
from parentPackage.pack1.file1 import foo
from file2 import foo2
Однако при этом командный терминал выдает ошибки:
Код: Выделить всё
ModuleNotFoundError: No module named 'parentPackage' (line 1)
Используя относительный импорт, я могу получить что-то, что принимает компилятор, но все равно не удается во время выполнения:
Код: Выделить всё
from ..pack1.file1 import foo
from file2 import foo2
ImportError: attempted relative import with no known parent package (line 1)
Есть предложения о том, как получить доступ к нужным мне функциям из файла 3?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... -directory