Ошибка импорта при импорте модуля из другого каталога

#python

#python

Вопрос:

У меня есть структура каталогов проекта, как показано ниже

 |project 
|-__init__.py
 |-src 
  |- __init.py__
  |- features
   |- __init.py__
   |- clean_data.py
 |-notebooks 
  |- notebook.ipynb 
  

введите описание изображения здесь

Основной каталог называется project, в котором у меня есть два каталога — src и notebooks.

Я хочу импортировать модуль clean_data.py в разделе каталог функций (который находится в разделе src) в моем блокноте.файл ipynb.

Я попробовал это:

 from ..src.features import clean_data 
  

поскольку все каталоги служат пакетом с init.py файл в каждом из них.

Но он выдает ошибку. Потратил довольно много усилий, пытаясь разобраться в этом, но не уверен, почему я получаю ошибку. Согласно этой статье, я, похоже, правильно обращаюсь к модулю

 mportError                               Traceback (most recent call last)
<ipython-input-23-11fd29e06b4c> in <module>()
----> 1 from ..src.features import clean_data

ImportError: attempted relative import with no known parent package
  

Комментарии:

1. Какую версию python вы используете?

2. 3.7.8. Использование среды conda при открытии записной книжки в этой среде и попытке импортировать модуль из другого каталога

3. Вы пробовали использовать from project.src.features import clean_data ?

4. ДА. Затем он сообщает, что модуль с именем project отсутствует.

5. Я пробовал аналогичный относительный путь в других проектах, и он работает нормально. Я понятия не имею, почему на этот раз это не работает. Я потратил много времени, чтобы разобраться в этом. Не повезло

Ответ №1:

Это часть моего кода, посмотрите на это:

 from domain_pricing.domains import *
from domain_pricing.conversion_rate import *
  

Я импортирую domains.py и conversion_rate.py из domain_pricing папки.

Что вы должны сделать, это:

 from src.features import clean_data
from src.data import another_module
  

Вам не нужны . каталоги путей или .. как системы на базе Unix. Вам нужно вызвать папку напрямую.

Комментарии:

1. то, что вы упоминаете, — это абсолютный путь. Я написал относительный путь. Оба должны работать. У меня ничего не работает. Однако, если я использую абсолютный путь, тогда мне пришлось бы указать весь путь из project.src.features import clean_data Также пробовал это, не работает

2. Это то, что работает в моем проекте, но включение относительного пути для меня не сработало. Если это не сработало, попробуйте импортировать project.src.features path. Если ничего не сработало, я думаю, что я не знаю больше решений. Я поделился своим решением.