Относительная проблема импорта, когда __main__ является пакетом в venv

Я получаю «ImportError: попытка относительного импорта без известного родительского пакета» при попытке импортировать модуль.

У меня есть статический веб-сайт (созданный с помощью Nikola), на котором есть плагин (модуль Python, который Nikola распознает как плагин, используя YAPSY {Yet Another Plugin System}, что делает его доступным для вызова в качестве команды Nikola). Этот модуль находится на моем веб-сайте, и он хочет импортировать из другого модуля также на веб-сайте.

__main__ принадлежит Николе, который находится в моем venv. Если я использую pdb для прерывания непосредственно перед импортом, я могу увидеть свой сайт в sys.path. Если я посмотрю на __name__, я увижу «importlib._bootstrap», что не имеет для меня особого смысла (хотя я пытаюсь использовать bootstrap4, но не здесь).

Мне кажется, что моя проблема связана с тем, что модуль, который я хочу импортировать, на самом деле не подчинен __main__ и, следовательно, не входит в дерево пакетов.

Мое дерево пакетов выглядит так:

      website
  |--__init__.py
  |--plugins
  |  |--__init__.py
  |  |--the_plugin.plugin  (yapsy uses to recognize plugin)
  |  |--the_plugin.py
  |--my_other_modules
  |  |--__init__.py
  |  |--work_module.py  (imported by the_plugin)

sys.path включает «веб-сайт».

Вопрос в том, как я могу гарантировать, что модули на веб- сайте можно импортировать?

Спасибо за любую помощь.--Дон

0 ответов

Другие вопросы по тегам