python中的import 和from xx import xxx基本上是我们最常用的功能了。但是对于相对导入的使用估计很多人会存在很多疑惑。
1 、 在编程过程中,在某些情况下,我们可以使用相对导入 ‘.’但是某些情况下又不可以使用,会出现错误。
2 、对于‘..’的使用相对来说会少一些,但是..的使用也很奇怪。
然后,经过我的长期观察,终于发现了规律,总结一下:
一、对于一个文件夹下面的py文件,如果该文件夹不是你的运行python解释器的文件夹中,你必须将其加在sys.path这个列表中才可以对其进行直接的通过文件名的方式进行导入。
二 、 相对导入‘.’和‘..’不能在直接运行的文件中使用,例如 python a.py, a.py 一定不能使用.
三、相对导入的使用和你导入这个文件的语法有关,如果你导入这个文件的时候是直接导入这个文件,那么这个文件中将不能使用相对导入。因为python
解释器会根据你导入的语法向上一级寻找这个‘.’,例如你要导入 b.py,如果你使用 import b,则解释器会在b前面找这个‘.’,然而却找不到,就会报错。如果你知道b.py在
util文件夹下面,则 如果使用 import util.b 则b.py中则可以使用相对导入‘.’,但是确不能使用‘..’,因为在b前面只有一个点,如果这样导入import my.util.b 那么就可以在b.py中使用‘..’相对导入,依次类推。