我知道在 Python 中有很多关于相同导入问题的问题,但似乎没有人设法提供正确使用的清晰示例。
假设我们有一个mypackage
包含两个模块foo
和bar
. 在里面foo
我们需要能够访问bar
。
因为我们还在开发它,mypackage
不在sys.path
.
我们希望能够:
- 进口
mypackage.foo
foo.py
作为脚本运行并执行该__main__
部分中的示例用法或测试。- 使用 Python 2.5
我们如何在 foo.py 中进行导入,以确保它在所有这些情况下都能正常工作。
# mypackage/__init__.py
...
# mypackage/foo/__init__.py
...
# mypackage/bar.py
def doBar()
print("doBar")
# mypackage/foo/foo.py
import bar # fails with module not found
import .bar #fails due to ValueError: Attempted relative import in non-package
def doFoo():
print(doBar())
if __name__ == '__main__':
doFoo()