无法使用crontab运行python脚本

时间:2016-03-05 01:16:00

标签: python linux

我正在努力将python脚本作为一个cron作业运行。

我以root身份登录 python脚本的权限是

-rwxr-xr-x 1 root root 2374 Mar  1 22:49 k_collab_spark.2.py

我正在使用

启动脚本
#!/usr/bin/env python

我测试了pythong脚本 如果我做“./ k_collab_spark.2.py”这个工作正常。

在crontab上的

我已将作业设置为

15 12 * * * /opt/lampp/htdocs/testme/SPARK/k_collab_spark.2.py >> /var/log/kspark.log

我在日志文件中看不到任何消息

一旦我加上2>& 1就会出现错误Traceback(最近一次调用最后一次):   文件“/opt/lampp/htdocs/kabeer/SPARK/k_collab_spark.2.py”,第2行,in     导入请求 ImportError:没有名为requests的模块,但如果我手动执行该服务则成功。我手动运行它可以正常工作

尝试定义路径但仍然是同一个问题

PATH =的/ usr / local / sbin中:在/ usr / local / bin中:/ sbin目录:/ bin中:/ usr / sbin目录:在/ usr / bin中     导入请求 ImportError:没有名为requests的模块

不知道我错过了什么..感谢周围的任何帮助。

4 个答案:

答案 0 :(得分:0)

  1. 您可以在脚本名称前明确添加python吗?
  2. 在crontab行的末尾添加2>&1,它还会将错误消息重定向到日志文件。有关详细说明In the shell, what does " 2>&1 " mean?
  3. ,请参阅此链接
  4. 您当前的用户和root也可能运行不同版本的python。

答案 1 :(得分:0)

尝试使用另一个第一行运行脚本:

#!/usr/bin/python

如果它在python解释器中成功执行了问题,因为当你安装了几个版本的Python时,/ usr / bin / env将确保使用的解释器 - 是环境中的第一个$ PATH ,我猜没有请求lib

答案 2 :(得分:0)

我使用shell脚本来调用python脚本。盒子上的蟒蛇造成了麻烦

export PATH = / opt / anaconda3 / bin:$ PATH / opt / anaconda3 / bin / python /opt/lampp/htdocs/scriptme.py> /opt/lampp/htdocs/scriptme.log 2>& 1

答案 3 :(得分:0)

将以下代码行添加到脚本中并编辑crontab:

from distutils.sysconfig import get_python_lib
print(get_python_lib())

现在检查crontab中的日志,您将获得一些路径

e.g. "/usr/lib/python2.7/dist-packages"

cd(更改目录)到上述路径,然后 ls(列表目录)检查软件包是否存在; 如果不是

sudo pip3 install requests -t . # dot indicates current directory 

,否则,如果您有 requirements.txt 文件,则可以尝试:

sudo pip3 install -r requirements.txt -t "/usr/lib/python2.7/dist-packages" 
#try this from the directory where  "requirements.txt" file exists

现在运行您的脚本。