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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值