Я прочитал несколько руководств по относительному и абсолютному импорту в Python и не могу понять эту ошибку ModuleNotFound
на всю жизнь.
Я работаю со следующей структурой каталогов:
project
|
+-- pseudo
| |
| +-- __main__.py
| |
| +-- pseudo.py
| |
| +-- analytics_generator
| |
| +-- analytics_generator.py
| |
| +-- models
| |
| +-- blueprint.py
Корень проблемы в том, что в файле analytics_generator.py я пытаюсь импортировать SomeClass из blueprint.py.
Когда я выполняю основную функцию в __main__.py
, я получаю следующую ошибку:
Traceback (most recent call last):
File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1741, in <module>
main()
File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1735, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1135, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/Applications/PyCharm CE.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File ".../project/pseudo/__main__.py", line 2, in <module>
from pseudo import Pseudo
File ".../project/pseudo/pseudo.py", line 4, in <module>
from analytics_generator.analytics_generator import AnalyticsGenerator
File ".../project/pseudo/analytics_generator/analytics_generator.py", line 1, in <module>
from models.blueprints import SomeClass
ModuleNotFoundError: No module named 'models'
Я запускаю скрипт в Pycharm, и мой рабочий каталог - .../project/pseudo
В файле analytics_generator.py, если я изменю оператор импорта на относительный импорт, он работает: from .models.blueprints import SomeClass
.
Однако использование полного пути не дает:
from pseudo.analytics_generator.models.blueprints import SomeClass
бросков:
ModuleNotFoundError: No module named 'pseudo.analytics_generator'; 'pseudo' is not a package
Любое руководство очень ценится!