最小示例的问题 Python 模块导入

Trouble with minimal example Python Module Imports

我做了一个最小的示例项目来尝试解决我的模块导入问题。结构如下:

MyProject/
├── main.py
└── utils/
    ├── __init__.py
    ├── foo.py
    └── bar.py

main.py 仅包含此代码:from utils import foo

__init__.py不包含任何代码

foo.py 仅包含此代码:from bar import Bar

bar.py 仅包含此代码:class Bar: pass

如果我运行python utils/bar.py,它运行无一例外。

同样,如果我运行python utils/foo.py,它运行无一例外。

但是,如果我运行 python main.py,它会导致以下异常:ModuleNotFoundError: No module named 'bar'

有什么办法可以解决这个问题吗?或者这甚至是一个问题,也许我正在做我不应该做的事情?

如果您想将其用作独立调用 (python utils/foo.py) 和从主调用 (python main.py),您可以同时使用两个导入:

try:
    from .bar import Bar
except ImportError: # for python3
    from bar import Bar
except ValueError: # for python2
    from bar import Bar