python命令行执行脚本找不到模块ModuleNotFoundError问题
作者:林凡尘coding
这篇文章主要介绍了python命令行执行脚本找不到模块ModuleNotFoundError问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
python命令行执行脚本找不到模块ModuleNotFoundError
最近在使用python做分群数据处理,需要在命令行中执行脚本处理业务。
业务流程就是:命令行脚本 Group.py 调用service模块下的AppUseService 服务,命令行实现才用的是 Google 的 Fire类库。在pycharm中是可以正常运行,在git bash shell中异常。
报错信息
执行命令:
python command/Group.py continueWeek
提示找不到我代码所定义的模块:
$ python command/Group.py continueWeek Traceback (most recent call last): File "command/Group.py", line 9, in <module> from service.AppUseService import AppUseService ModuleNotFoundError: No module named 'service'
项目结构
解决方案
在命令行的脚本Group.py最开始的前几行加上如下代码,实现将脚本加入系统的路径。
强调:要在命令行脚本添加!并且一定要放到前面!这样才能有效加载其他模块!!!
import sys import os curPath = os.path.abspath(os.path.dirname(__file__)) rootPath = os.path.split(curPath)[0] sys.path.append(rootPath)
python命令行运行时,报错ModuleNotFoundError: No module named ‘XXX‘,找不到自定义模块
python运行报错
ModuleNotFoundError: ModuleNotFoundError: No module named 'step_defss’
报错原因
在python中,一个.py文件就是一个模块,导入模块等于导入文件
是文件,就有文件路径,所以这个情况,本质上就是找不到文件
1、很多时候在pycharm运行一切正常,但是到命令行中运行py文件,就会报错
原因:
pycharm在每次运行时,都会检索整个工程目录,把目录都添加到sys.path中,运行的时候,就能够找到对应的模块.py文件
2、命令行找不到模块
原因:
命令行执行时,往往都是直接运行某个.py文件,缺少路径检索的步骤(需要我们自己代码加上自动检索)
解决方法
在需要执行的.py文件中,加上以下这段代码,就是在import模块文件前,先将模块路径,添加到sys.path,就能够正常引入模块
import os import sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR) from step_defss.scenario_steps import * #接后续代码
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。