У меня есть проект, который выглядит так:
my_project/
__init__.py -- empty
run.py
datacheck/
__init__.py -- empty
datacheck.py -- containing class DataCheck(object)
config.py -- containing BusinessConfig(object)
business.py -- containing class BusinessCheck(DataCheck)
Мой PYTHONPATH
настроен на включение / my_project.
В run.py у меня есть следующий код:
from datacheck.business import BusinessCheck
business = BusinessCheck()
business.check_data()
В business.py у меня есть следующие неудачные операции импорта:
from datacheck.config import BusinessConfig
from datacheck.datacheck import DataCheck
Относительный импорт, такой как from .config import BusinessConfig
, работает - однако я читал во многих потоках, что абсолютный импорт предпочтителен.
Чтобы сделать простой тест, я также создал следующее:
myproject/
__init__.py -- empty
run_test.py
test/
__init__.py -- empty
test1.py -- containing class Test1(object)
test2.py -- containing class Test2(Test1)
run_test.py импортирует и запускает класс Test2
, это не удалось.
Это оставило меня немного ошеломленным, я не понимаю, почему мой абсолютный импорт в datacheck не работает - кто-нибудь может объяснить?