python загрузка модулей одинаковой структуры пакета в разных папках - PullRequest
1 голос
/ 01 февраля 2020

У меня следующая структура папок:

data_plugin_main/
            /common
                __init__.py
                utils.py
            /data
                __init__.py
                commmon_dal.py


plugin1
            /data
                __init__.py
                data_plugin_dal.py      

plugin2
            /data
                __init__.py
                another_plugin_dal.py   

Мне нужно поддерживать эту структуру, но я могу написать код, который либо импортирует, либо может ссылаться на:

  • данные. common_dal
  • data.data_plugin_dal
  • data.another_plugin_dal

Похоже, что python будет импортировать / загружать модули только в первой папке данных, с которой столкнется. так в вышеприведенном случае, поскольку есть в __init__.py в data_plugin_main/data/, загружается common_dal.py. однако, даже если я добавлю другие пути к PYTHONPATH, data_plugin_dal и another_plugin_dal, они не смогут быть импортированы или на них есть ссылки.

Кто-нибудь знает, как решить эту проблему?

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Я смог решить эту проблему, используя упаковку пространства имен: https://packaging.python.org/guides/packaging-namespace-packages/

0 голосов
/ 01 февраля 2020

Если я правильно понимаю, вы можете попробовать среду Pydev, свободно установленную в Eclipse.

Каждый модуль также является именем каталога с родительским модулем, который является их отцом, поэтому в pydev, если источник plugin_2 должен ссылаться на common_dal.py, импорт выглядит как from data_plugin_main import data.common_dal Так что в проводнике проекта вы должны создать родительский модуль, который действует как супер __init__, и тогда вы можете создавать дочерние модули, как вы sh. Это своего рода вдохновило Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...