У меня есть проект 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
, который, как говорили, не был хорошим решением, даже если бы он работал.
Ничего из этого не помогло, и я некоторое время боролся с этой проблемой, поэтому любое предложение будет оценено.