crontab识别不了python_path ,ModuleNotFoundError 的问题

crontab -e 编辑命令 执行python文件
结果crontab 找不到 python, 或者使用的不是我们用户的python,而是系统默认的python

因为 Crontab 会使用默认的环境, 并不会读取我们配好的环境, 我们普通用户一般会把环境变量设置在 .bashrc 文件 或者 .bash_profile 等文件中,但是 crontab 并不会进行识别.嘿嘿嘿

步骤一:

这时我们可以手动指定 python, xxx/xxx/xx/ python3  python 文件 这样的方式

错误用例:
crontab -e

00 03 * * * python3 /home/youjun.wang/csv/mdl_online/run_model  &>/xx/xx/xx.log &

正确的:

00 03 * * * /opt/soft/python-3.6.10-wyj/bin/python3 /home/youjun.wang/csv/mdl_online/run_model  &>/xx/xx/xx.log &

步骤二:

设置 项目地址 python_path, 一般我们都是写到 环境的配置文件里的,结果 crontab 比较呆,他不会识别, 所以我们要自己在 crontab 的文件里 export python_path 一下, 或者 写个shell 脚本, 在 shell 脚本里面export 一下.

先给你们看个错误的用例;

00 03 * * * export PYTHONPATH=$PYTHONPATH:/home/youjun.wang/csv/mdl_online
00 03 * * * /opt/soft/python-3.6.10-wyj/bin/python3 /home/youjun.wang/csv/mdl_online/run_model  &>/xx/xx/xx.log &

正确的

0 03 * * * export PYTHONPATH=$PYTHONPATH:/home/youjun.wang/csv/mdl_online
       /opt/soft/python-3.6.10-wyj/bin/python3 /home/youjun.wang/csv/mdl_online/run_model  &>/xx/xx/xx.log &```

不知道你们被坑到没,反正我这个呆逼被坑到了, 写了两个任务, 结果还是识别不了python path,很久以后才反应过来这玩意只能写一行

但是这样写太长了, 不便于维护
所以
example.sh 文件

```shell
export PYTHONPATH=$PYTHONPATH:/home/youjun.wang/csv/mdl_online
       
/opt/soft/python-3.6.10-wyj/bin/python3 /home/youjun.wang/csv/mdl_online/run_model  &>/xx/xx/xx.log &

crontab -e

00 03 * * * sh /xx/xx/example.sh

这样就很简洁, 很nice .
希望我的经历能给你一点帮助.

你可能感兴趣的:(环境搭建,运维,调度,crontab,ModuleNotFound)