Python 3.6
Я написал некоторые компоненты, и я пытаюсь импортировать один из них в другой.
Вот как выглядит структура моего проекта:
.
└── components
├── __init__.py
├── extract
│ └── python3
| ├── __init__.py
│ └── extract.py
└── transform
└── python3
├── __init__.py
└── preprocess.py
extract.py
from components.transform.python3.preprocess import my_function
if __name__ == '__main__':
my_function()
preprocess.py
def my_function():
print("Found me")
Когда я запускаю python components/extract/python3/extract.py
Я вижу следующую ошибку:
ModuleNotFoundError: нет модуля с именем "компоненты"
Я добавил пустой файл __init__.py
в каталоги, которые содержат модули, а также каталог пакетов верхнего уровня.
Хорошо, для импорта требуется, чтобы пакет верхнего уровня был доступен в Python PATH (sys.path
).
Итак, чтобы это работало, вы должны:
components
доп .
к Путьу Питона:
export PYTHONPATH='.'
запустите ваш скрипт:
python components/extract/python3/extract.py
В моей системе он успешно отображает:
Found me
__init__.py
. Python думаетcomponents
представляет собой модуль (то есть.py
файл), вы явно хотите , чтобы рассматривать его как пакет (из которого можно получить доступ с помощью модулей.
Обозначений) - и сделать это, он должен содержать__init__.py
__init__.py
в каталоги с модулями в них, а также в каталог верхнего уровня.