У меня есть следующая структура каталогов:Импортирующие модули, используемые в пакете в __init__.py
funniest/
setup.py
funniest/
__init__.py
ModuleA.py
ModuleB.py
# __init__.py
from numba import jit
from .ModuleA import ClassA
# ModuleA.py
import funniest.ModuleB
class ClassA():
pass
# ModuleB.py
@jit
def f():
pass
Однако при импорте модуля I получите сообщение об ошибке:
>>> import funniest
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/domi89/Dropbox/Python_Projects/funniest/funniest /__init__.py", line 2, in <module>
from .ModuleA import ClassA
File "/home/domi89/Dropbox/Python_Projects/funniest/funniest /ModuleA.py", line 1, in <module>
import funniest.ModuleB
File "/home/domi89/Dropbox/Python_Projects/funniest/funniest/ModuleB.py", line 1, in <module>
@jit
NameError: name 'jit' is not defined
Я не могу понять, почему это происходит, потому что когда __init__.py
выполнить сначала, первое, что он делает, это импорт from numba import jit
. Так почему же jit
не определено, когда дело доходит до функции f
в ModuleB
?
Вам нужно импортировать вещи, которые вы используете * в B *, а не только на уровне модуля. – jonrsharpe