python的包导入问题(一)from . import 的使用

必备知识:from . import,“.”  代表使用相对路径导入,即从当前项目中寻找需要导入的包或函数


一、问题描述:


工作项目内的__init__文件初始化一个函数func,同一工作目录的 ccc模块 调用该函数,可以用:

(1)from file03 import func
(2)from . import func

然后执行func(),让ccc执行时,打印‘----’

但是使用 第(2)种方法调用func后,当ccc被执行时报错如下:

from . import func

SystemError: Parent module '' not loaded, cannot perform relative import

(提示父模块没有加载,无法展示导入关系)

而使用第(1)种导入方法

导入时不存在这样的报错


二、下面用项目外的py文件导包使func执行:

现在我在工作目录下新建一个py文件test(test与file03平级),使用test调用ccc,让函数func打印内容:


此时若在ccc使用方法(2)导入函数,test执行不会发生报错

可以正常打印


三、拓展:

       在file03 下新建py文件,使用 from . import ccc,该文件被执行时,也会报同样的错误,而用from file03 import ccc不会报错,说明使用 . 导包和使用 . 导函数一样也不能正常执行


四、结论:

py文件若含有from . import 导包或导入函数的情况,无法在该文件下正常执行,而父模块被外部加载时可以正常被使用。


评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值