我有以下项目结构:
|- main.py
|- lib/
|- foo.py
|- bar.py
示例代码 main.py
from lib.foo import foo
from lib.bar import bar
def main():
bar()
foo()
if __name__ == '__main__':
main()
示例代码 lib/bar.py
def bar():
# do something
示例代码 lib/foo.py
from .bar import bar
def foo():
bar()
if __name__ == '__main__':
foo()
现在的问题:如果我执行 main.py 一切正常。如果我执行 foo.py 我得到以下 python 错误:
ImportError:尝试在没有已知父包的情况下进行相对导入
我在这个线程上发现了一个类似的问题,到目前为止,这条评论解决了我的问题:https ://stackoverflow.com/a/45556023/4428711
到目前为止foo.py 的解决方案:
try:
from bar import bar
except ImportError:
from .bar import bar
def foo():
bar()
if __name__ == '__main__':
foo()
现在我的问题是:对于嵌套相对导入,是否有比直接和间接执行更好的解决方案?