python 模塊導入注意事項

  1. 入口文件不能使用相對導入。
import .module1

if __name__ == '__main__':
	print("hello")

ImportError: attempted relative import with no known parent package
  1. 相對導入不能超過頂層包。
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章