ModuleNotFoundError в проекте Python с использованием пакетов - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть проект Python (python 3.6) с довольно простой структурой пакетов. Моя цель - иметь пакет, содержащий модули, которые повторно используются в других пакетах. Вот структура:

    my_project                   
    ├── /docs           
    ├── /src
    │   ├── __init__.py                
    │   ├── /common
    │   |    |── __init__.py      
    │   |    |── common_module.py
    │   ├── /packageA
    │   |    |── __init__.py      
    │   |    |── modA.py

Проблема в том, что когда я делаю следующее внутри modA.py:

    from src.common import common_module as cm

Я получаю следующую ошибку: ModuleNotFoundError: No module named src.common

То, что я до сих пор пробовал, это

  • убедившись, что у меня правильная структура пакета, как в https://docs.python.org/3/tutorial/modules.html
  • расширение PYTHONPATH в виртуальной среде, которую я использую, на export PYTHONPATH=<path_to_project>/src
  • размещение __init__.py внутри /my_project, а также
  • Прочтите другой вопрос о StackOverflow, но ни один из них не дал решения. Некоторые из них занимались хакерством с sys.path, который, как говорили, не был хорошим решением, даже если бы он работал.

Ничего из этого не помогло, и я некоторое время боролся с этой проблемой, поэтому любое предложение будет оценено.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2019

Чтобы этот импорт работал, PYTHONPATH должен быть .../my_project, а не .../my_project/src.

1 голос
/ 30 апреля 2019

Да, вы должны поставить __init__.py в project,
, затем export PYTHONPATH = <LOCAL_PATH_TO_...>/project

...