ОБНОВЛЕНИЕ 3 : Если вы хотите импортировать подмодуль из каталога пакета, который является base
, вы можете использовать это (пропуская часть base
в импорте) в файле /module mod1.py
,
from mod2 import classA
Приведенное выше решение также работает со скриптами run_test_1.py
и run_test_2.py
.Надеюсь, это поможет =)
ОБНОВЛЕНИЕ 2 : я продемонстрирую тот же подход, выполнив скрипт на python из каталога test
,
и создам скрипт с именем run_test_1.py
в каталоге test
, следуя той же структуре, что и «ОБНОВЛЕНИЕ 1», со следующим содержимым:
from base.mod2 import classA
a = classA()
Также создайте второй скрипт с именем run_test_2.py
в каталоге test
, со следующимсодержание:
from base import mod1
mod1.classA()
Оцените оба сценария с вашего терминала следующим образом:
$ cd ~/path/to/test/
$ python run_test_1.py
hello
$ python run_test_2.py
hello
Как показано, вы должны получить вывод "hello" на своем терминале.
ОБНОВЛЕНИЕ 1 : Я создал ту же структуру каталогов для вашего пакета, как и в каталоге с именем test
,
-- test
--base
__init__.py
mod1.py
mod2.py
version.py
Содержимое __init__.py
совпадает с вашим.
from .version import __version__ as version
__version__ = version
Содержимое mod1.py
совпадает с вашим,
from base.mod2 import classA
Содержимое mod2.py
:
class classA:
def __init__(self):
print("hello")
Затем с помощью интерпретатора python
изкаталог test
, я проверял следующее,
>>> from base.mod2 import classA
>>> a = classA()
hello
Если вы уверены, что *Каталог 1056 * находится в sys.path
, тогда вы можете попробовать это,
from base import mod2
Также я предлагаю вам изменить base
на что-то более информативное для вашего проекта.
РЕДАКТИРОВАТЬ : Я также предлагаю вам ознакомиться с документацией "Пакеты" на веб-сайте Python, где также обсуждается, как загрузить подмодуль.