linux crontab定时执行python找不到module问题解决
1.报错配置:
30 * * * * python3 /opt/es-prd-read/es_read_hits_by_timestr_prd.py
2.程序情况:
本地window执行正常;生产linux服务器手动执行正常;linux crontab定时执行报错,找不到module;
Traceback (most recent call last):
File “/opt/es-prd-read/es_read_hits_by_timestr_prd.py”, line 1, in
from elasticsearch import Elasticsearch
ModuleNotFoundError: No module named ‘elasticsearch’
3.问题解决:
在定时任务脚本中显式指定Python路径和环境变量
(1)30 * * * * /data/anaconda3/ana3ins5/bin/python3 /opt/es-prd-read/es_read_hits_by_timestr_prd.py >> /opt/es-prd-read/minute.log 2>&1
(2)20 * * * * /opt/es-prd-read/python_action.sh >> /opt/es-prd-read/escompare.log 2>&1
python_action.sh:/data/anaconda3/ana3ins5/bin/python3 /opt/es-prd-read/es_read_hits_by_timestr_prd.py
4.原因分析:
这个问题通常是由于Linux定时任务执行环境与直接执行时的环境不一致导致的,定时任务默认使用系统Python解释器,若脚本依赖虚拟环境,需显式指定虚拟环境中的Python路径;