- 浏览: 146093 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 1171pip 安装: yum install python-setu ... -
探索 Pexpect,第 2 部分:Pexpect 的实例分析
2013-08-19 11:08 1665原文: http://www.ibm.com/develope ... -
Sudo提权出现:xx用户不在 sudoers 文件中
2013-08-03 20:22 870Sudo提权出现:xx用户不在 sudoers 文件中 症状 ... -
atoi源码
2013-05-14 19:32 1222原文: http://blog.csdn.net/eroswa ... -
为重负网络优化 Nginx 和 Node.js
2013-05-13 01:12 948原文:http://linux.cn/forum.php?mo ... -
《APUE》:线程和fork(父子进程锁)
2013-04-29 21:07 1106《Unix环境高级编程》这本书附带了许多短小精美的小程序,我在 ... -
多线程下慎用sigwait
2013-04-29 20:54 760原文:http://blog.chinaunix. ... -
CentOS升级Python到2.7版本
2013-04-23 15:24 899[root@localhost ~] python -V ... -
文本文件中获取http链接
2013-04-16 18:47 654#!/usr/bin/python2.7 #coding ... -
Scrapy 基础(1)
2013-04-07 18:26 865Python开源抓取框架简单 ... -
安装Python-PIP,MySQL-python
2013-04-07 18:22 1465sudo yum install MySQL-python ... -
ubuntu eclipse 问题
2013-04-05 03:30 735Eclipse 3.6 在 Ubuntu 10.04 下会出现 ... -
redis-python
2013-04-05 03:04 752#!/usr/bin/env python #coding=u ... -
linux多线程之pthread_cancel结束线程(防止死锁)
2013-03-28 18:28 1185linux多线程之pthread_cancel结束线程 摘要: ... -
c++ 多线程编程的时候遇到了一个编译问
2013-03-27 15:22 789今天在进行多线程编程的时候遇到了一个编译问题:error: a ... -
socket参数详解:KeepAlive
2013-03-19 13:24 1085TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会 ... -
ehcache分布式例子
2013-03-19 11:52 605配置文件: recluster_ehcache_0.xml ... -
Voldemort — 分布式 key-value 存储系统
2013-03-19 00:40 947Voldemort — 分布式 key-value 存储系统 ... -
python http客户端
2013-03-18 16:01 705''' Created on 2013-3-18 @auth ... -
java 慎用 new Random()
2013-03-11 18:14 858package tt; import java.util.* ...
相关推荐
解决这个错误问题:ModuleNotFoundError: No module named 'fcntl'
django-crontab插件对linux底层的调用,调用过程中会出现 ImportError: No module named fcntl
crontab调用python,python中封装kettle的定时任务调用 调用,注意python中导入环境变量 30 0 * * * python /export/quality_kettle/kettle/Resposity/runKettle.py
该软件包旨在提供一种解析crontab计划条目并确定下一次应何时运行项目的方法。 更具体地说,它计算从调用.next()方法到下一次执行该项目的时间之间的延迟(以秒为单位)。 将下面的图表与进行比较,您会注意到不...
本文实例讲述了Python使用crontab模块设置和清除定时任务操作。分享给大家供大家参考,具体如下: centos7下安装Python的pip root用户使用yum install -y python-pip 时会报如下错误: No package python-pip ...
资源来自pypi官网。 资源全名:python-crontab-2.2.3.tar.gz
相信很多人看完docker容器, 需要加crontab, 加完却发现不能执行,心塞…..接着便开始各种折腾… 首先当然是看日志了, 发现/var/log 下面没有任何信息, 那是因为你没有打开rsyslog. # /etc/init.d/rsyslog start 继续...
运用crontab检测程序是否在运行,可通过检测进程或检测端口,如果程序没在运行,可调用指定的命令
烧瓶-crontab 简单的Flask计划任务,无需额外的守护程序 该项目受到强烈启发,仅在Python 3.5+上有效。 由于2020年1月1日即将推出Python 2,因此尚无计划支持Python 2。快速开始通过pip安装: $ pip install flask-...
NodeJS库和实用程序,用于将本地时区中的crontab转换为一组UTC crontab。 由于夏时制,它将创建多个UTC crontab。 在线使用! 在查看 用作脚本 $ npx local-crontab -h usage: local-crontab [-h] [-v] [--tz TZ] ...
一:使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行 1、 如何往 cron 中添加一个作业? # crontab –e 0 5 * * * /root/bin/...
熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务。可以通过命令crontab -e编写任务。当然也可以直接写配置文件设置任务。 但是有时候希望通过脚本自动设置,比如我们应用程序部署时等。有需求当然就得...
Linux Crontab定时计划任务 博客地址:https://blog.csdn.net/qq_31122833/article/details/102910054
#/usr/bin/env python #-*- coding:utf-8 -*- """ 1.解析 crontab 配置文件中的五个数间参数(分 时 日 月 周),获取他们对应的取值范围 2.将时间戳与crontab配置中一行时间参数对比,判断该时间戳是否在配置设定的...
它试图捕获明显的错误并警告crontab文件中的可疑行。 一些有效的行将生成警告。 某些愚蠢但有效的crontab行也会产生错误。 通过执行以下操作来运行它: chkcrontab crontab_file 错误将导致退出代码为非零。 仅凭...
1、Python自带模块 threading模块的Timer类或者schedule模块 2、用crontab 首先创建一个shell脚本 touch daren.sh 创建 vim daren.sh 修改 #!/bin/bash #这里python3要写绝对路径 sudo python3 /root/timetask/...
用Python脚本结合Linux的crontab、windows服务程序,实现了一个基于widows服务程序的定时任务管理器。
crontab中经常配置运行脚本输出为:>/dev/null 2>&1,来避免crontab运行中有内容输出。 shell命令的结果可以通过‘> ’的形式来定义输出 /dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo "123" > /home/...