将一个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

转载于:https://www.cnblogs.com/williamjie/p/9227793.html

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

  1. python文本编辑器报错_notepad++编辑器中运行python程序时需要注意的编码格式

    本篇文章给大家带来的内容是关于notepad++编辑器中运行python程序时需要注意的编码格式,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 语言:python3.4 文本编辑器: ...

  2. 【ZZ】Python安装模块出错(ImportError: No module named s...

    2019独角兽企业重金招聘Python工程师标准>>> 在window平台下安装第三方模块时,出现这样的错误: Google了以下,才知道原来Python里少了这个模块. 我们可以在 ...

  3. Python安装模块出错(ImportError: No module named setuptools)解决方法

    在window平台下安装第三方模块时,出现这样的错误: Google了以下,才知道原来Python里少了这个模块. 我们可以在Python官网去查找 其中 Package Index中查我们需要的模块 ...

  4. 使命召唤16计算机内存不足,电脑中运行使命召唤16提示出现一个问题如何解决...

    近日有玩家在电脑中运行使命召唤16游戏的时候,突然遇到了提示出现一个问题的现象,导致无法继续游戏,这是怎么回事呢,可能是兼容性有问题,或者检查一下游戏文件的完整性,接下来给大家带来电脑中运行使命召唤1 ...

  5. java执行python提示import os找不到_java利用Jython调用python抛出错误ImportError: No module named odbchelper...

    Python代码: import odbchelper def add(x, y): """ add method """ return x ...

  6. python 报错in module,Centos 7 python 编译报错 ImportError: No module named six 解决办法

    本地编译Open vSwitch时报错Traceback (most recent call last): File "./ovsdb/ovsdb-idlc.in", line 8 ...

  7. python程序发布 ubuntu_在ubuntu16.04的虚拟环境中运行Python程序作为服务

    我正在尝试让一个Flask+SocketIO应用程序作为一个服务在ubuntu16.04上运行,在一个虚拟环境中.我的服务器每天凌晨3点重新启动(超出我的控制范围),所以我需要它在启动时自动启动.在 ...

  8. 运行PHP程序时提示“Notice: Undefined index”的解决办法

    最近在调试网站程序的时候,不知道怎么经常出现"Notice:Undefined index"的提示,程序又可以正常运行,就是看到这个提示感觉有点不爽,把模板搞乱了,经查其实这个不是 ...

  9. python3.5中import sqlite3报错:ImportError: No module named _sqlite3

    原因:缺少相关库 解决方案: 1  安装相关库 yum install sqlite-devel 2  重新编译安装Python 转载于:https://www.cnblogs.com/MnCu826 ...

最新文章

  1. 英伟达颠覆CPU!Arm架构专为AI而生,性能超x86十倍
  2. python 读png的值变了_python – 为什么scipy.ndimage.io.imread返回PngImageFile,而不是值数组...
  3. 【codeforces 765F】 Souvenirs
  4. vue axios 跨域_SpringBoot+Vue从零开始搭建系统(三)前后端整合二
  5. map()和zip()操作
  6. [机器学习]超参数优化算法-SuccessiveHalving与Hyperband
  7. C#中用WebClient.UploadData 方法上载文件数据
  8. ubuntu 安装fcitx输入法(3.6和4.0bate)
  9. FastDFS分布式文件系统
  10. 思科交换机配置dhcp参数
  11. 波卡二层扩容协议Plasm Network已准备连接到即将推出的Rococo V1
  12. 两台电脑如何实现共享文件
  13. TIA protal与SCL从入门到精通(1)——SCL编程入门
  14. web前端 基于html实现花店购物网站源码(HTML+CSS+JavaScript) 企业网站制作
  15. Android开发:指南针(基于手机传感器)
  16. 安卓接入讯飞语音识别
  17. 吉度盘点机PDA盘点生成的条码和数量导入库存Excel表
  18. tomcat集群session共享
  19. Xmap的NullPointerException
  20. 连续语音信号的短时倒谱分析及其参数用途

热门文章

  1. Spring bean 的生命周期
  2. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
  3. MQCache 秒开缓存快速入门指南 - 旁路(使用镜像交换机)
  4. mysql三锁,mysql锁机制之表锁(三)
  5. 将十进制数转化成二进制数,计算其中1的个数
  6. notepad++打开一个某个工程目录
  7. 802.11b协议的一些介绍和说明
  8. 知识蒸馏原来不是你想的那样子
  9. MDK中软仿真下Debug-(printf)Viewer
  10. XSS攻击之窃取Cookie