- 入口文件不能使用相對導入。
import .module1
if __name__ == '__main__':
print("hello")
ImportError: attempted relative import with no known parent package
- 相對導入不能超過頂層包。
app
|
|----module1
| |---f1.py
|
|----module2
| |---f2.py
|
|----main.py
# f2.py
import ..module1.f1
$ python main.py
ValueError: attempted relative import beyond top-level package
錯誤原因: 在f2.py文件中, f2屬於module2,module2是頂層包。
“. .module1.f1”, 則表示從module2的上層包中引用module1. 此時已經定位到app文件夾的位置了,超過了頂層包module2,因此報 “attempted relative import beyond top-level package”的錯誤。
在這裏,解決辦法是使用絕對導入:
# f2.py
import module1.f1
因爲入口文件是 main.py, 以這個路徑爲基礎,f1的絕對路徑就是 module1.f1