crontab执行python脚本提示ImportError解决方法
时间:2022-05-05
本文章向大家介绍crontab执行python脚本提示ImportError解决方法,主要内容包括报错信息、解决、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
早上看到hadoop的计算结果没有进入到mysql数据库,查看关于hadoop计划任务的输出日志发现有报错信息。果断拿来手动执行相关的python脚本,并没有错误,然后丢到计划任务里面就报错,折腾了我一上午终于搞好了。
报错信息
报错执行/data/datax/bin/tool_hive2mysql_build_json.py
脚本的时候ImportError
。
[root@uhadoop-mrdv2j-task1 data]# tailf /var/log/bigdata/run-hive-qz_yy_uv_source_2mysql.sh.log
at com.alibaba.datax.core.util.ConfigParser.parse(ConfigParser.java:26)
at com.alibaba.datax.core.Engine.entry(Engine.java:137)
at com.alibaba.datax.core.Engine.main(Engine.java:204)
Caused by: java.io.FileNotFoundException: File '/data/datax/job/hive-qz_yy_uv_source-2mysql.json' does not exist
at org.apache.commons.io.FileUtils.openInputStream(FileUtils.java:299)
at org.apache.commons.io.FileUtils.readFileToString(FileUtils.java:1711)
at org.apache.commons.io.FileUtils.readFileToString(FileUtils.java:1748)
at com.alibaba.datax.core.util.ConfigParser.getJobContent(ConfigParser.java:106)
... 4 more
Traceback (most recent call last):
File "/data/datax/bin/tool_hive2mysql_build_json.py", line 6, in <module>
import argparse
ImportError: No module named argparse
DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2016, Alibaba Group. All Rights Reserved.
2017-11-24 10:28:02.649 [main] ERROR Engine -
解决
经过google、baidu得知,crontab执行出错(或者不执行计划任务)90%的错误都是环境变量引起的。此次问题的原因是crontab本身的环境变量中找不到python的argparse模块,所以就抛出ImportError。我的解决方法是在python脚本中添加相关模块的路径到$PYTHONPATH中。 1.查询模块的位置
>>> import argparse
>>> argparse.__file__ //查询argparse模块的位置
'/usr/local/lib/python2.7/argparse.pyc'
2.在脚本中将模块的路径append到PYTHONPATH中
#!/usr/local/bin/python2.7
#coding:utf-8
import json
import sys
sys.path.append("/usr/local/lib/python2.7") //append一定要在报错模块之前
import argparse
.....
coding
.....
参考资料:http://blog.csdn.net/rj03hou/article/details/5709276
- Python学习笔记(4):自定义时间类
- Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
- 微信小程序开发:设置消息推送
- Mysql备份系列(1)--备份方案总结性梳理
- ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理)
- 顶象全场景IoT安全方案解决物联网两大难题
- 诡异的【session丢失】和【<img src="">标签】
- TensorFlow核心使用要点
- “搜一搜”直达生活服务 微信连接移动消费新场景
- Linux服务器安全登录设置记录
- Linux系统下的ssh使用(依据个人经验总结)
- 从MapX到MapXtreme2004[4]-标注AutoLabel
- Linux下锁定账号,禁止登录系统的设置总结
- 深度解析 TypeConverter & TypeConverterAttribute (一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C语言入门系列之6.一维和二维数组
- C语言经典习题100例(五)21-25
- Python 列表 使用技巧
- 通过案例学Python之判断属相
- C语言经典习题100例(七)31-35
- C语言经典习题100例(八)36-40
- 学习笔记:一个MySQL实例有多个Activiti数据库问题
- C语言经典习题100例(九)41-45
- C语言入门系列之1.C语言概述和上机运行简单C程序
- 开发微信小程序,我为什么放弃 setData,使用 upData
- C语言入门系列之3.顺序程序设计和输入输出
- uniapp提交选中的性别的value值
- LeetCode 1422. 分割字符串的最大得分
- LeetCode 64. 最小路径和
- C语言入门系列之4.分支结构程序-关系、逻辑运算和if、switch语句