Как правильно импортировать функцию из модуля src

#python #pip #python-import #importerror

#python #pip #python-импорт #ошибка импорта

Вопрос:

У меня есть папка проекта:

 project
├── notebooks
│   └── EDA.ipynb
├── setup.py
└── src
    ├── data
    │   ├── make_data.py
    │   └── __init__.py
    └── __init__.py
  

Содержимое в setup.py есть:

 from setuptools import find_packages, setup

setup(
    name='src',
    packages=find_packages(),
    version='0.1.0',
    description='',
    author='AG',
    license='MIT')
  

После использования pip install . from project чтобы сделать мой src модулем python, я могу видеть модуль src при создании conda list … Но когда я пытаюсь импортировать некоторую функцию из make_data.py когда я работаю в EDA.ipynb:

 from src.data.make_data import some_func
  

Я получаю:

 ModuleNotFoundError: No module named 'src'
  

Что я делаю не так?

Ответ №1:

Является ли виртуальная среда, в которой вы установили ‘src’, такой же, где вы пытаетесь это сделать.

Пожалуйста. запустите

 pip list
  

в этой виртуальной среде, чтобы проверить, установлен ли ‘src’.

Кроме того, пожалуйста. проверьте инструкцию import в интерпретаторе python вашей виртуальной среды.

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

1. Когда я запускаю pip list , я также вижу пакет src в среде. И когда я импортирую src из интерпретатора python, он успешно загружается… В других попытках из EDA.ipynb я также был в правильной среде.

Ответ №2:

Мне удалось решить проблему, благодаря @Simplecode за помощь. Кажется, что из терминала я смог импортировать модуль, но не из spyder или jupyterlab, несмотря на то, что я был в той же виртуальной среде. Это было связано с тем, что IDLE использовали другую версию python, поскольку они не были установлены в virtualenv. Установка spyder и jupyterlab в среде решила проблему импорта.