yaoheng52199
yaoheng52199
2017-06-18 03:38
采纳率: 100%
浏览 2.6k

Linux下用crontab执行定时python任务报错

下面是我写的定时crontab脚本(之前看了网上的博客所以引入环境变量):
20 19 * * * /etc/profile; /usr/bin/env python /home/Users/model_score.py

查看日志说缺少某个包。

但是外部单独执行 /usr/bin/env python /home/Users/model_score.py 是OK的。

网上查看了大量的资料,基本都说报错缺少包是由于crontab中默认的环境变量和外部不一样导致的,但是我按照方法加入了环境变量了还是报错,请问这个问题到底在哪?哪位大神指点下?谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • yaoheng52199
    yaoheng52199 2017-06-19 01:48
    已采纳

    问题找了,还是自己回答自己吧,最终的代码张这样:
    38 9 * * * /home/u_jrd_lv1/anaconda2/bin/python /home/u_jrd_lv1/Users/hank.yao/M1_M2_model/model_score.py >> /home/u_jrd_lv1/Users/hank.yao/M1_M2_model/cron2.log 2>&1

    有个关键的地方,虽然在外部执行 python /home/u_jrd_lv1/Users/hank.yao/M1_M2_model/model_score.py

    没问题,但是写到crontab中时python要写全路径,而且必须先查明这个python到底被安装在哪里了!!用which python来查看,我被坑是因为linux系统上好几个不同版本的python,我想当然的以为python是安装在/usr/bin/env中的第一个默认位置,其实不是,linux系统往往自带一个老的python版本,所以一般会重新安装一个新的,所以/usr/bin/env这个位置是不对的,里面不会有后加入的lib。

    点赞 评论
  • oyljerry
    oyljerry 2017-06-18 04:56

    缺少包的错误,那就看看那个包在crontab执行的账户环境下能不能找到。主要是对比这个

    点赞 评论
  • AJwutao
    AJwutao 2017-07-06 09:30

    应该是脚本里面的python不对吧

    点赞 评论

相关推荐