开发者社区> 问答> 正文

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中默认的环境变量和外部不一样导致的,但是我按照方法加入了环境变量了还是报错,请问这个问题到底在哪?哪位大神指点下?谢谢!

展开
收起
爱吃鱼的程序员 2020-06-23 14:11:53 809 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    问题找了,还是自己回答自己吧,最终的代码张这样:
    389***/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.log2>&1

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

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

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

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

    2020-06-23 14:12:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载