5.4.4 相对导入和绝对导入
接上面的例子,假设我们在 module2
中要引用 module1`,代码如下:
这样写没有问题,因为有 __init__.py
文件把目录标记为包,所以可以正确识别。然而如果我们的入口不是 main.py
,而是直接执行 python3 module2.py
,就无法识别到父目录里面的 __init__.py
文件了。此时可以采用相对导入:
一个点表示当前的包,两个点就表示上一个包,以此类推……;相对导入只能使用 from import
的语法,而绝对路径导入则不受限制,两种写法皆可。
相对路径的缺点在于容易丢失命名空间,比较这两种写法:
前者丢失了 bar
的来源,而后一种写法不会。
Last updated