当前位置:   article > 正文

python“ModuleNotFoundError: No module named 模块名” 错误的一种情况_modulenotfounderror: no module named 'timm.models.

modulenotfounderror: no module named 'timm.models.layers.activations

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/47302
推荐阅读
相关标签
  

闽ICP备14008679号