python导入本地当前目录下的文件和父目录下的文件

今天我想要导入本地当前目录下的文件和父目录下的文件,网上查了很多教程,但还都是报错,最后几经尝试,终于成功解决了这一问题,在这里详细记录一下过程,同时也希望能够对大家有所帮助~~~:)

导入当前目录下的文件

需求:在DataManager.py中导入tokenizer包下的文件(如下图目录结构所示)

分析可知,这显然属于是导入当前目录下的文件,

但是,使用import直接导入(具体如下一行代码所示)就是会报错:找不到模块tokenizer。

from tokenizer.LMTextTokenizer import LMTextTokenizer

先说结果,最后成功的办法:

将上一行代码修改成:

from .tokenizer.LMTextTokenizer import LMTextTokenizer

对,你没有看错,就是在tokenizer的前面加一个点,无敌简单的方法,或许有时候简单的反而更有效【笑哭】【笑哭】【笑哭】

然后解释下原因:

“.”表示当前目录,所以就是在当前目录下的tokenizer包下的LMTextTokenizer中导入LMTextTokenizer。


吐槽一下:

之前尝试过把路径“./tokenizer”放到os.path中,如果目录存在则导入,否则给出提示信息。这个方法一开始修改之后确实可以成功导入,但是我之后再改完别的import语句后运行就又导入不了了,所以还是不行。

至于其它试过的办法,压根就没成功过一次,根本不值一提,这里就不再赘述了。


导入父目录下的文件

需求:在DataManager.py中导入utils包下的文件

分析可知,这显然是导入父目录下的文件,

但是用from...import导入就是会报错:模块找不到

from utils.IOOption import open_file, write_file

先说结果,最后成功的办法:

将上一行代码修改成:

import os
import sys
sys.path.insert(0,os.path.dirname(os.getcwd()))

from utils.IOOption import open_file, write_file

就可以成功导入了。

原因解释:

首先利用sys.path.insert将当前目录插入到pycharm查找模块的路径中的第一条,这样就可以顺利找到utils下的模块了。


总之,bug是千奇百怪,防不胜防,但好在最终解决了【嘻嘻】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值