`

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文件

    了解这些基本概念和解决策略后,你应该能够更好地理解和解决 `ImportError: No module named fcntl` 这样的问题。在实际开发中,熟悉这些系统级别的接口对于编写健壮的跨平台代码至关重要。同时,理解 Python 的导入...

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

    `python-crontab`库则将这种功能带入了Python世界,使得开发者可以更方便地在Python程序中创建、读取、修改和删除crontab任务。 在`python-crontab`库中,主要包含以下几个关键知识点: 1. **安装**:要安装`...

    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模块设置和清除定时任务操作详解 #### 概述 本文主要介绍如何在CentOS 7平台上利用Python与`python-crontab`模块进行定时任务的管理和控制。通过具体的示例,我们将逐步展示从环境搭建到定时...

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

    在标题和描述中提到的场景,我们将讨论如何利用`crontab`来检查程序是否正在运行,并在程序未运行时触发相应的处理。 首先,我们了解`crontab`的基本用法。`crontab`命令用于编辑和查看用户的任务调度表。要列出...

    crontab命令

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

    Linux定时脚本crontab中文乱码.docx

    Linux 定时脚本 crontab 中文乱码解决方案 Linux 系统中的定时脚本 crontab 是一个功能强大的工具,允许用户在指定的时间执行特定的命令或脚本。然而,在使用 crontab 执行 jar 文件时,如果输出结果包含中文字符...

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

    在Python中,可以使用`croniter`库来模拟`crontab`的功能。例如: ```python import croniter import time cron = croniter.croniter('0 * * * *', time.time()) # 每小时执行一次 while True: next_time = cron....

    Linux Crontab 定时任务 命令详解

    其中,`/etc/crontab` 文件是系统级别的 Crontab 文件,用于存放系统运行的一些调度程序,而 `/var/spool/cron` 目录下存放的是每个用户自己的 Crontab 文件。 2. Crontab 文件格式 Crontab 文件的格式如下所示: ...

    crontab –e使用实操

    在 Ubuntu 中,可以使用以下命令安装 Crontab: `apt-get install cron` 在 CentOS 中,可以使用以下命令安装 Crontab: `yum -y install vixie-cron` 创建 Shell 脚本 为了实现 MySQL 备份,我们需要创建一个 ...

    crontab格式详解

    crontab 文件的格式为:M H D m d cmd,其中 M 代表分钟(0-59),H 代表小时(0-23),D 代表天(1-31),m 代表月(1-12),d 代表星期中的天(0-6,0 代表星期天),cmd 代表要运行的程序。 crontab 文件的格式...

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

    总结起来,解决Docker容器中Crontab无法正常运行的问题通常需要检查以下几点: 1. 确认rsyslog服务是否已经启动,以便记录Crontab操作的日志。 2. 查看Cron日志,找到与PAM安全会话相关的问题。 3. 确保PAM配置文件...

    crontab详解

    此外,crontab中运行的程序会被送到shell执行,该shell仅具有三个环境变量:USER, HOME, SHELL。因此,如果脚本中需要其他环境变量,需要在脚本中显式地设置。 需要注意的是,在生产环境中,一些任务的调度需要谨慎...

    使用crontab定时任务自动执行爬虫程序.rar

    在这个场景中,我们讨论的是如何利用`crontab`来定时执行Python爬虫程序。Python作为一种广泛用于数据抓取和处理的编程语言,与`crontab`结合可以实现自动化爬虫任务,如定期抓取网页数据、监控网站变化等。 首先,...

    crontab执行结果未通过发送mail通知用户的方法

    在排查过程中,首先应查看`crontab`的日志。在CentOS 7系统中,日志由`systemd`管理,可以使用以下命令查看与`crond`相关的日志: ```bash journalctl _COMM=crond --since=today ``` 或者,如果需要过滤特定的...

    celery+ rabbitMq + python linux 下 例子 crontab例子

    标题中的“celery+ rabbitMq + python linux 下 例子 crontab例子”涉及的是一个在Linux环境下使用Python、Celery以及RabbitMQ构建任务调度系统,并结合crontab进行定时任务设置的示例。接下来,我们将深入探讨这些...

Global site tag (gtag.js) - Google Analytics