Моя программа имеет структуру, подобную этой:
myapp.py
basemod.py
[pkg1]
__init__.py
mod1.py
[pkg2]
__init__.py
mod2.py
myapp.py
:
import pkg1
import pkg2
if __name__ == '__main__':
pkg1.main()
pkg2.main()
basemod.py
:
import pkg1
def get_msg():
return pkg1.msg
pkg1/__init__.py
:
import mod1
msg = None
def main():
global msg
mod1.set_bar()
msg = mod1.bar
pkg1/mod1.py
:
bar = None
def set_bar():
global bar
bar = 'Hello World'
pkg2/__init__.py
:
import mod2
def main():
mod2.print_foo()
pkg2/mod2.py
:
import basemod
foo = basemod.get_msg()
def print_foo():
print(foo)
Если я запускаю myapp.py
, я получаю:
None
Пока я думаю, я бы ожидал:
Hello World
Моя цель - сохранить два пакета полностью независимыми друг от друга,и только через basemod.py
, который является своего рода API для pkg1
.
Я начинаю думать, что я не до конца понял, как работает импорт между пакетами, что я делаю неправильно?
Спасибо!