使用cmd控制台运行python文件报错,提示找不到xxx模块

我的需求背景:
最近在研究使用jenkins持续集成去执行python测试,但是在部署jenkins项目之后,‘构建触发器’执行定时构建任务中的批处理命令(就是与cmd中运行的命令是一样的),jenkins执行后,控制台马上就报错了,如下图:
在这里插入图片描述
提示:
File “driver_unit_class_note_csv.py”, line 7, in
from youdao.unit_txt_note.yd_note_report.HTMLTestRunner import HTMLTestRunner
ModuleNotFoundError: No module named ‘youdao’

意思是说,在driver_unit_class_note_csv.py文件的第7行,导入HTMLTestRunner文件中的HTMLTestRunner类的时候找不到from后面名为‘yuodao’的包。

后面我直接在cmd控制台中去执行了driver_unit_class_note_csv.py,错误是一样的
在这里插入图片描述
也在网上找了一些资料,但是对于我现在的脚本没用,还是会报错,后面根据网上资料的思路整理了下,目前找到两种方法。

我这边先给看下我的目录结构
在这里插入图片描述

方法一:在当前文件要使用from导入文件的上面佳加入两行代码

import sys
sys.path.append('../..')

自己的理解,可以跳过

该方法与网上找的类似,网上是这样的sys.path.append(’…’),我直接拷过来用,发现还是会报错(这也正常,同样的代码不在两个地方用不一定适用),后面查看了下print(sys.path)中的内容,发现是一堆路径(pycharm会自动检索from后面的路径,而在cmd控制台中运行脚本,是只能找到当前文件下方的路径的,这就需要通过代码加载路径到sys.path中,根据网上方法的思路,猜想是不是把报错信息找不到的包‘youdao’的目录对当前文件(driver_unit_class_note_csv.py)做相对路径找到‘youdao’这个包名是不是就可以了.后面经过实验是可以的,网上找的方法sys.path.append(’…’)只是将相对当前文件的路径加入到了sys.path中,针对于我的目录结构,我需要把当前文件(driver_unit_class_note_csv.py)的上级的上级的路径放到sys.path中。

结果图:
在这里插入图片描述
方法二:去掉from 后面的 ‘youdao.’,其他内容不变

# 修改前
from youdao.unit_txt_note.yd_note_report.HTMLTestRunner import HTMLTestRunner
# 修改后
from unit_txt_note.yd_note_report.HTMLTestRunner import HTMLTestRunner

自己的理解,可以跳过
根据方法一分析的思路,尝试将from 后面的 youdao 包去掉,这样就使得检索的路径在当前文件(driver_unit_class_note_csv.py)的父路径就好了,这样就不需要用到youdao的包了,实验后确实可以。

结果图:
在这里插入图片描述
另一篇文章中还有其他情况的解决方法py文件(引用自定义库和第三方库)在dos窗口中运行提示找不到模块的问题

上面的理解只是自己根据尝试的实际结果推出来的,如果有什么地方写的不对的还请指出

▩初出茅庐,如果有其他好的方法,欢迎留言 (ง •_•)ง

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值