0

我有以下项目结构:

|- 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()

现在我的问题是:对于嵌套相对导入,是否有比直接和间接执行更好的解决方案?

4

1 回答 1

0

__init__.py 在lib目录下创建文件

from .foo import *
from .bar import *

示例代码 main.py

import lib

if __name__ == '__main__':
    lib.foo()

示例代码 lib/foo.py

import lib

def foo():
    lib.bar()

foo()
于 2020-04-13T22:04:40.323 回答