Python导入上层目录中的包(..) / 导入同级目录的包 (相对导入)

本文详细介绍了Python中如何导入同级目录、上级目录以及其他目录下的模块和包。强调了__init__.py文件的作用,以及如何通过sys.path.append()调整搜索路径。同时,讨论了在不同场景下正确导入模块的必要条件和方法,包括相对导入和绝对导入的使用规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入与当前目录同级的其他目录下的包

 在dayaset_contra.py文件下想导入labelmaps.py中的包

sys.path.append("..")
from utils.labelmaps import get_vocabulary, labels2strs

而且要求utils下必须有__init__.py文件

而且必须是

进入到dataset目录下执行python dataset_contra.py

因为如果使用python lib/dataset/dataset_contra.py 这样执行的话,是不能用相对路径表示方法的

如果没有精确到utils下的labelsmaps文件,想from utils import get_vocabulary, labels2strs的话,那就要在utils下的__init__.py里面定义好了才行

导入上级目录下的某个py文件

这样就不需要有__init__.py了

像我在上层目录下的logger_self_code.py这样就可以导入成功

sys.path.append('..')
from logger_self_code import Logger

比如想在test.py中导入logger_self_code.py

导入同级目录

.
└── src/
 ├── main.py
 └── util.py

在main.py中,

from util import doSomethingCool
或
from .util import doSomethingCool

这么写都是不行的, 因为util只是个模块,不是个包

只能写

import util

如果非想上面那样的话,就要改成

.
└── src/
    ├── main.py
    └── utils/
        ├── __init__.py
        └── util.py

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值