python:Attempted relative import in non-package

problem:Attempted relative import in non-package

所谓相对路径其实就是相对于当前module的路径,但如果直接执行脚本,这个module的name就是“__main__”, 而不是module原来的name, 这样相对路径也就不是原来的相对路径了,导入就会失败,出现错误“ValueError: Attempted relative import in non-package”

solve:

方法1:把src目录加入到sys.path里去

方法2:把整个工程myproject写成package放进site-packages
然后这样引用
from myproject.XXX.YYY import XXX

方法3:使用python -m 执行

例如myproject.mypackage.module1

如果你直接執行

python myproject/mypackage/module1.py

因为是直接执行的,对于module1.py不知道相对路径是什么,可采用

python -m myproject.mypackage.module1执行。

相当于

import myproject

import mypackage

import module1

即:import myproject.mypackage.module1这种形式的绝对引用

并且会设置 __package__ = 'myproject.mypackage'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值