ImportError: attempted relative import with no known parent package,包的导入,路径

文章详细介绍了Python中包的导入机制,包括检查sys.path以确保包路径正确,使用__init__.py创建包,以及绝对导入和相对导入的语法。同时提到了from__future__importabsolute_import的使用,以及如何进行不同层级的相对导入。
摘要由CSDN通过智能技术生成

##### 包的导入:
1. 路径检查:检查相应包的路径是否在系统的路径中
```
import sys 
print(sys.path)
```
如果不在通过`sys.path.append("")`加入到路径
可以通过`print(sys.modules)`查看目前导入的包
可以通过`sys.path.insert(0, "path")`来改变python检索路径的顺序,目前path为首位检索;
检查当前目录:
```
import os
print(os.path.abspath("."))#当前目录
print(os.path.abspath(r"..")) #上一层路径
```
2. 包与导入

如果一个目录中存在多个模块,可以通过创建 `__init__.py` 文件(该文件可以为空文件)将该当前目录标识为一个包)。若多个模块放置于具有多层嵌套的目录当中,其逻辑关系为包(根目录)-> 子包(子目录)-> 模块(*.py);
绝对导入示例:
单独的模块:`import module`;
模块位于包内部(不存在子包):`from package import module`;
模块位于包内部(存在子包):`from package.subpackage import module`。

有`from __future__ import absolute_import`标识时,必须用绝对导入

相对导入(relative import)
位于同一包中的不同子包和模块,可以通过前缀.标识存在调用关系的包/模块之间的路径依赖关系并进行相对调用。示例:
同层目录的模块:`from . import module`;
模块位于同层包内部(不存在子包):`from .package import module`;
模块位于同层包内部(存在子包):`from .packge.subpackge import module`;
模块位于上一层级目录:将以上语句的前缀进行替换 `from . -> from ..`,以此类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值