Python: вызов модуля в том же каталоге - PullRequest
1 голос
/ 30 января 2020

У меня проблемы с импортом модуля в тот же каталог. По сути, вот моя организация

alex (folder)
 |
 |- alex (folder)
 |   |- __init__.py
 |   |- commons.py
 |   |- KnowledgeBase.py
 |
 |- test.py

в моем файле init .py, у меня есть следующие строки, чтобы упростить импорт commons & KnowledgeBase в test.py. Кажется, он работает.

from .KnowledgeBase import KnowledgeBase
from .commons import *

В моем файле KnowledgeBase.py у меня есть класс с именем KnowledgeBase.

В commons.py у меня есть различные объекты:

  • именованный кортеж с именем CDE

  • объект с именем TimePeriod

А затем в test.py я могу вызвать мой объекты таким образом.

import alex as al
do stuff with al.KnowledgeBase
do stuff with al.CDE
do stuff with al.TimePeriod

Что не работает сейчас.

Я вызываю в KnowledgeBase.py модуль commons.py.

import alex as al
stuff with al.CDE ...

Я получаю следующее сообщение об ошибке.

AttributeError: module 'alex' has no attribute 'CDE'

Если я делаю это традиционным способом:

import commons as AC
stuff with AC.CDE ...

Я получаю следующее сообщение об ошибке.

ModuleNotFoundError: No module named 'commons'

И если я удалите все в файле init .py, он работает, но затем я не могу использовать «легкий вызов модуля» в test.py.

Если я оставлю пустой init .py файл, в test.py, вместо простого написания

import alex

Я должен объявить весь импорт:

from alex import KnowledgeBase
from alex import commons

Пожалуйста, что я могу сделать, чтобы сохранить импорт различных python модулей в alex "simp le "и в то же время, возможность импортировать модуль из папки alex в другие модули в папке alex?

Заранее благодарю за помощь. Хорошего дня, Bests,

1 Ответ

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

Я возвращаюсь после того, как нашел соответствующее форматирование. В KnowledgeBase.py правильный способ импортировать функции или объекты из общего достояния - набрать:

from . import commons as AC
...