`

crontab中运行python程序出错,提示ImportError: No module named解决全过程

 
阅读更多
原文地址:http://blog.csdn.net/langlang2671/article/details/8259056
crontab中运行python程序出错,提示ImportError: No module named解决全过程
分类: python linux 2012-12-05 11:10 290人阅读 评论(0) 收藏 举报

将一个python脚本放入crontab执行时,提示如下错:
ImportError: No module named hashlib
但是在shell中直接执行时没有任何问题,google之后,得到线索是PYTHONPATH的问题,PYTHONPATH会决定python查找lib的路径。
在服务器上面echo $PYTHONPATH的时候没有任何路径
继续调查发现最终影响的是sys.path
分别输出了两种场景中的sys.path

shell:
[root@ short_task]# python
Python 2.6.2 (r262:71600, Aug 7 2009, 18:39:16)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import sys
>>> print sys.path
['', '/usr/local/lib/python2.6/site-packages/setuptools-0.6c5-py2.6.egg', '/usr/local/lib/python2.6/site-packages/MySQL_python-1.2.2-py2.6-linux-x86_64.egg', '/home/houjw/short_task', '/home/bonny/sqlLib', '/usr/local/lib/python26.zip', '/usr/local/lib/python2.6', '/usr/local/lib/python2.6/plat-linux2', '/usr/local/lib/python2.6/lib-tk', '/usr/local/lib/python2.6/lib-old', '/usr/local/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/site-packages']

crontab:
于是修改脚本,查看当脚本在crontab执行时的syspath是多少
[root@ short_task]# less get_email_hash.log
['/home/houjw/short_task', '/usr/lib64/python24.zip', '/usr/lib64/python2.4', '/usr/lib64/python2.4/plat-linux2', '/usr/lib64/python2.4/lib-tk', '/usr/lib64/python2.4/lib-dynloa
d', '/usr/lib64/python2.4/site-packages', '/usr/lib64/python2.4/site-packages/Numeric', '/usr/lib64/python2.4/site-packages/gtk-2.0', '/usr/lib/python2.4/site-packages']
Traceback (most recent call last):
File “/home/houjw/short_task/get_email_hash.py”, line 7, in ?
import hashlib
ImportError: No module named hashlib

然后研究了一下sys.patch的生成方式:
A list of strings that specifies the search path for modules. Initialized from the environment variable PYTHONPATH, plus an installation-dependent default.
这个不仅与PYTHONPATH有关系,而且与installation-dependent default有关系,这个估计与python的安装有关系,而且通过上面的sys.path输出发现机器上安装了两个python2.4和2.6,说明crontab中用到的是2.4,而shell中用到的是2.6,hashlib正好是在2.5的时候加入python的,所以2.4就没有找到。

通过cat crontab发现crontab中的PATH变量首先发现的是2.4的python

于是问题就得到了解决,在crontab中使用/usr/loca/bin/python XXX.python而不是python XXX.python或者将XXX.python修改为可执行文件,在python头部#!/usr/local/bin/python
分享到:
评论

相关推荐

    python fcntl模块

    解决这个错误问题:ModuleNotFoundError: No module named 'fcntl'

    fcntl.py文件

    django-crontab插件对linux底层的调用,调用过程中会出现 ImportError: No module named fcntl

    crontab调用python,python中封装kettle的定时任务调用

    crontab调用python,python中封装kettle的定时任务调用 调用,注意python中导入环境变量 30 0 * * * python /export/quality_kettle/kettle/Resposity/runKettle.py

    parse-crontab:在Python中解析和使用crontab计划

    该软件包旨在提供一种解析crontab计划条目并确定下一次应何时运行项目的方法。 更具体地说,它计算从调用.next()方法到下一次执行该项目的时间之间的延迟(以秒为单位)。 将下面的图表与进行比较,您会注意到不...

    Python使用crontab模块设置和清除定时任务操作详解

    本文实例讲述了Python使用crontab模块设置和清除定时任务操作。分享给大家供大家参考,具体如下: centos7下安装Python的pip root用户使用yum install -y python-pip 时会报如下错误: No package python-pip ...

    PyPI 官网下载 | python-crontab-2.2.3.tar.gz

    资源来自pypi官网。 资源全名:python-crontab-2.2.3.tar.gz

    docker容器中crontab无法正常运行解决方案

    相信很多人看完docker容器, 需要加crontab, 加完却发现不能执行,心塞…..接着便开始各种折腾… 首先当然是看日志了, 发现/var/log 下面没有任何信息, 那是因为你没有打开rsyslog. # /etc/init.d/rsyslog start 继续...

    linux-运用crontab检测程序是否在运行可通过检测进程或检测端口

    运用crontab检测程序是否在运行,可通过检测进程或检测端口,如果程序没在运行,可调用指定的命令

    flask-crontab:简单的Flask计划任务,无需额外的守护程序

    烧瓶-crontab 简单的Flask计划任务,无需额外的守护程序 该项目受到强烈启发,仅在Python 3.5+上有效。 由于2020年1月1日即将推出Python 2,因此尚无计划支持Python 2。快速开始通过pip安装: $ pip install flask-...

    local-crontab:local:alarm_clock:将本地crontab转换为UTC crontab

    NodeJS库和实用程序,用于将本地时区中的crontab转换为一组UTC crontab。 由于夏时制,它将创建多个UTC crontab。 在线使用! 在查看 用作脚本 $ npx local-crontab -h usage: local-crontab [-h] [-v] [--tz TZ] ...

    crontab命令

    一:使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行  1、 如何往 cron 中添加一个作业?  # crontab –e  0 5 * * * /root/bin/...

    详解使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务。可以通过命令crontab -e编写任务。当然也可以直接写配置文件设置任务。 但是有时候希望通过脚本自动设置,比如我们应用程序部署时等。有需求当然就得...

    crontab.rar

    Linux Crontab定时计划任务 博客地址:https://blog.csdn.net/qq_31122833/article/details/102910054

    python实现的解析crontab配置文件代码

    #/usr/bin/env python #-*- coding:utf-8 -*- """ 1.解析 crontab 配置文件中的五个数间参数(分 时 日 月 周),获取他们对应的取值范围 2.将时间戳与crontab配置中一行时间参数对比,判断该时间戳是否在配置设定的...

    chkcrontab:用于检查系统crontab文件(通常为etccrontab和etccron.d)的错误和常见错误的工具

    它试图捕获明显的错误并警告crontab文件中的可疑行。 一些有效的行将生成警告。 某些愚蠢但有效的crontab行也会产生错误。 通过执行以下操作来运行它: chkcrontab crontab_file 错误将导致退出代码为非零。 仅凭...

    在服务器跑python定时任务

    1、Python自带模块 threading模块的Timer类或者schedule模块 2、用crontab 首先创建一个shell脚本 touch daren.sh 创建 vim daren.sh 修改 #!/bin/bash #这里python3要写绝对路径 sudo python3 /root/timetask/...

    Python windows服务程序实现计划任务

    用Python脚本结合Linux的crontab、windows服务程序,实现了一个基于widows服务程序的定时任务管理器。

    crontab用法详解

    crontab中经常配置运行脚本输出为:>/dev/null 2>&1,来避免crontab运行中有内容输出。 shell命令的结果可以通过‘> ’的形式来定义输出 /dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo "123" > /home/...

Global site tag (gtag.js) - Google Analytics