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第一个元素是脚本所在目录的字符串,绝对地址形式表示,由解释器初始化。但是如果不是解释器启动脚本的方式,如交互式,则该元素为空字符串。

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ModuleNotFoundError: No module named '模块'这个错误通常是由于Python解释器找不到指定的模块而引起的。Python解释器查找模块文件的过程是按照一定的搜索路径来进行的。这些搜索路径包括当前路径、系统路径和第三方库路径。在导入模块时,Python会按照一定的顺序在这些路径中查找相应的模块文件。如果找不到指定的模块文件,则会抛出ModuleNotFoundError异常。 解决这个问题的方法有几种。首先,你可以检查模块是否正确。确保你输入的模块与实际文件一致,包括大小写。其次,你可以确认模块文件是否存在于Python的搜索路径中。你可以通过print(sys.path)来打印Python的搜索路径,然后检查模块文件是否存在于其中。如果模块文件不在Python的搜索路径中,你可以将其添加到sys.path中,或者将模块文件所在的路径添加到PYTHONPATH环境变量中。如果你使用的是第三方库,还需要确保你已经正确地安装了该库。 总之,当你遇到ModuleNotFoundError: No module named '模块'的错误时,你可以首先检查模块是否正确,并确保模块文件存在于Python的搜索路径中。如果仍然无法解决问题,你可以考虑添加模块文件所在的路径到sys.path或PYTHONPATH中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Python问题】Python 导入模块的三种方式ModuleNotFoundError: No module named模块](https://blog.csdn.net/qq_40571009/article/details/125043422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值