Я стараюсь, чтобы проект наукоемкой данных был хорошо организован, поэтому я создал каталог внутри моего каталога src
с именем utils
, который содержит файл с именем helpers.py
, который содержит некоторые вспомогательные функции, которые будут используется во многих сценариях. Какова наилучшая практика того, как я должен импортировать func_name
из src/utils/helpers.py
в файл в совершенно другом каталоге, например src/processing/clean_data.py
?
Я вижу ответы на этот вопрос, и я реализовал решение, которое работает, но это кажется уродливым:
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))
Я делаю это правильно? Нужно ли добавлять это к каждому script, который хочет импортировать func_name
, например train_model.py
?
Моя текущая структура папок проекта:
myproject
/notebooks
notebook.ipynb
/src
/processing
clean_data.py
/utils
helpers.py
/models
train_model.py
__init__.py
Примеры файлов:
# clean_data.py
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))
from src.utils.helpers import func_name
func_name()
# helpers.py
def func_name():
print('I'm a helper function.')