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

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