- 浏览: 153553 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lyaqys:
lz实现的OptimisticExclusiveLock有点问 ...
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
原文地址: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
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 安装 pip beautifulsoup4
2013-10-25 17:50 1250pip 安装: yum install python-setu ... -
探索 Pexpect,第 2 部分:Pexpect 的实例分析
2013-08-19 11:08 1719原文: http://www.ibm.com/develope ... -
Sudo提权出现:xx用户不在 sudoers 文件中
2013-08-03 20:22 913Sudo提权出现:xx用户不在 sudoers 文件中 症状 ... -
atoi源码
2013-05-14 19:32 1262原文: http://blog.csdn.net/eroswa ... -
为重负网络优化 Nginx 和 Node.js
2013-05-13 01:12 1005原文:http://linux.cn/forum.php?mo ... -
《APUE》:线程和fork(父子进程锁)
2013-04-29 21:07 1169《Unix环境高级编程》这本书附带了许多短小精美的小程序,我在 ... -
多线程下慎用sigwait
2013-04-29 20:54 792原文:http://blog.chinaunix. ... -
CentOS升级Python到2.7版本
2013-04-23 15:24 944[root@localhost ~] python -V ... -
文本文件中获取http链接
2013-04-16 18:47 686#!/usr/bin/python2.7 #coding ... -
Scrapy 基础(1)
2013-04-07 18:26 893Python开源抓取框架简单 ... -
安装Python-PIP,MySQL-python
2013-04-07 18:22 1502sudo yum install MySQL-python ... -
ubuntu eclipse 问题
2013-04-05 03:30 791Eclipse 3.6 在 Ubuntu 10.04 下会出现 ... -
redis-python
2013-04-05 03:04 791#!/usr/bin/env python #coding=u ... -
linux多线程之pthread_cancel结束线程(防止死锁)
2013-03-28 18:28 1248linux多线程之pthread_cancel结束线程 摘要: ... -
c++ 多线程编程的时候遇到了一个编译问
2013-03-27 15:22 823今天在进行多线程编程的时候遇到了一个编译问题:error: a ... -
socket参数详解:KeepAlive
2013-03-19 13:24 1209TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会 ... -
ehcache分布式例子
2013-03-19 11:52 630配置文件: recluster_ehcache_0.xml ... -
Voldemort — 分布式 key-value 存储系统
2013-03-19 00:40 1010Voldemort — 分布式 key-value 存储系统 ... -
python http客户端
2013-03-18 16:01 741''' Created on 2013-3-18 @auth ... -
java 慎用 new Random()
2013-03-11 18:14 914package tt; import java.util.* ...
相关推荐
解决这个错误问题:ModuleNotFoundError: No module named 'fcntl'
了解这些基本概念和解决策略后,你应该能够更好地理解和解决 `ImportError: No module named fcntl` 这样的问题。在实际开发中,熟悉这些系统级别的接口对于编写健壮的跨平台代码至关重要。同时,理解 Python 的导入...
`python-crontab`库则将这种功能带入了Python世界,使得开发者可以更方便地在Python程序中创建、读取、修改和删除crontab任务。 在`python-crontab`库中,主要包含以下几个关键知识点: 1. **安装**:要安装`...
crontab调用python,python中封装kettle的定时任务调用 调用,注意python中导入环境变量 30 0 * * * python /export/quality_kettle/kettle/Resposity/runKettle.py
该软件包旨在提供一种解析crontab计划条目并确定下一次应何时运行项目的方法。 更具体地说,它计算从调用.next()方法到下一次执行该项目的时间之间的延迟(以秒为单位)。 将下面的图表与进行比较,您会注意到不...
### Python使用crontab模块设置和清除定时任务操作详解 #### 概述 本文主要介绍如何在CentOS 7平台上利用Python与`python-crontab`模块进行定时任务的管理和控制。通过具体的示例,我们将逐步展示从环境搭建到定时...
在标题和描述中提到的场景,我们将讨论如何利用`crontab`来检查程序是否正在运行,并在程序未运行时触发相应的处理。 首先,我们了解`crontab`的基本用法。`crontab`命令用于编辑和查看用户的任务调度表。要列出...
一:使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行 1、 如何往 cron 中添加一个作业? # crontab –e 0 5 * * * /root/bin/...
Linux 定时脚本 crontab 中文乱码解决方案 Linux 系统中的定时脚本 crontab 是一个功能强大的工具,允许用户在指定的时间执行特定的命令或脚本。然而,在使用 crontab 执行 jar 文件时,如果输出结果包含中文字符...
在Python中,可以使用`croniter`库来模拟`crontab`的功能。例如: ```python import croniter import time cron = croniter.croniter('0 * * * *', time.time()) # 每小时执行一次 while True: next_time = cron....
其中,`/etc/crontab` 文件是系统级别的 Crontab 文件,用于存放系统运行的一些调度程序,而 `/var/spool/cron` 目录下存放的是每个用户自己的 Crontab 文件。 2. Crontab 文件格式 Crontab 文件的格式如下所示: ...
在 Ubuntu 中,可以使用以下命令安装 Crontab: `apt-get install cron` 在 CentOS 中,可以使用以下命令安装 Crontab: `yum -y install vixie-cron` 创建 Shell 脚本 为了实现 MySQL 备份,我们需要创建一个 ...
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无法正常运行的问题通常需要检查以下几点: 1. 确认rsyslog服务是否已经启动,以便记录Crontab操作的日志。 2. 查看Cron日志,找到与PAM安全会话相关的问题。 3. 确保PAM配置文件...
此外,crontab中运行的程序会被送到shell执行,该shell仅具有三个环境变量:USER, HOME, SHELL。因此,如果脚本中需要其他环境变量,需要在脚本中显式地设置。 需要注意的是,在生产环境中,一些任务的调度需要谨慎...
在这个场景中,我们讨论的是如何利用`crontab`来定时执行Python爬虫程序。Python作为一种广泛用于数据抓取和处理的编程语言,与`crontab`结合可以实现自动化爬虫任务,如定期抓取网页数据、监控网站变化等。 首先,...
在排查过程中,首先应查看`crontab`的日志。在CentOS 7系统中,日志由`systemd`管理,可以使用以下命令查看与`crond`相关的日志: ```bash journalctl _COMM=crond --since=today ``` 或者,如果需要过滤特定的...
标题中的“celery+ rabbitMq + python linux 下 例子 crontab例子”涉及的是一个在Linux环境下使用Python、Celery以及RabbitMQ构建任务调度系统,并结合crontab进行定时任务设置的示例。接下来,我们将深入探讨这些...