Импорт скрипта из родительского каталога


как импортировать модуль (файл python), который находится в Родительском каталоге?

оба каталога имеют __init__.py файл в них, но я все еще не могу импортировать файл из родительского каталога?

В этом макете папки скрипт B пытается импортировать скрипт A:

Folder A:
   __init__.py
   Script A:
   Folder B:
     __init__.py
     Script B(attempting to import Script A)

следующий код в скрипте B не работает:

import ../scriptA.py # I get a compile error saying the "." is invalid
3 54

3 ответа:

вы не импортировать скрипты на языке Python можно импортировать модули. Некоторые модули python также являются сценариями, которые вы можете запускать напрямую (они выполняют некоторую полезную работу на уровне модуля).

в целом предпочтительнее использовать абсолютный импорт, а не относительный импорт.

toplevel_package/
├── __init__.py
├── moduleA.py
└── subpackage
    ├── __init__.py
    └── moduleB.py

на moduleB:

from toplevel_package import moduleA

если вы хотите работать moduleB.py как скрипт, то убедитесь, что родительский каталог для toplevel_package в своем sys.path.

С docs:

from .. import scriptA

вы можете сделать это в пакетах, но не в скриптах, которые вы запускаете напрямую. По ссылке выше:

обратите внимание, что как явный, так и неявный относительный импорт основаны на имя текущего модуля. Так как имя основного модуля является всегда " _ _ main__", модули, предназначенные для использования в качестве основного модуля a Приложение Python всегда должно использовать абсолютный импорт.

Если вы создаете скрипт что импортирует A. B. B, вы не получите ValueError.

Если вы хотите запустить скрипт напрямую, вы можете:

  1. добавьте путь к папке в переменную окружения (PYTHONPATH).
  2. добавить путь к sys.path в свой сценарий.

затем:

import module_you_wanted