python“ModuleNotFoundError: No module named 模块名” 错误的一种情况

跨目录导包,运行python脚本时,有时出现如题的错误。原因一般是用了os,sys两个模块,而没有理解清楚两者的关系。os是关于本地系统的操作,sys是关于python环境的操作,如模块搜索路径配置。
一种情况如下:

import sys, os
sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定

注意到,这里os.pardir是当前操作系统工作目录的父目录,而不是脚本文件的父目录。当在终端cd到脚本文件所在的目录,执行相应的脚本时,操作系统的工作目录和脚本文件所在目录一致,所以不会有问题。
但是当在目录A,执行目录B下的脚本时(脚本用绝对位置引用即可),此时添加的到sys.path的是目录A的父目录,而不是脚本所在的B的父目录,所以不能访问B父目录下的模块,通常这样操作的本意是引用脚本父目录中的模块,因此出错。
解决方法是在sys.path中加入要访问目录的绝对位置(书写麻烦)。或者使操作系统的工作目录和脚本所在目录形成相对位置(最好不超过两层,父子或同级较好),然后就可以在sys.path中加入相对位置(书写简单)。
注:sys.path第一个元素是脚本所在目录的字符串,绝对地址形式表示,由解释器初始化。但是如果不是解释器启动脚本的方式,如交互式,则该元素为空字符串。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值