Python 由于缺少模块,Cronjob无法工作
我看到类似的线程,但它不能解决我的问题,所以我尝试了一个新的。 我可以从终端的shell脚本文件运行我的脚本,但是当它来自cronjob时,我有一个错误。我可以根据需要提供补充信息。任何帮助都将不胜感激。我被困在这里太久了 我使用的是Anaconda3,所有模块都安装在Conda上 shell脚本:Python 由于缺少模块,Cronjob无法工作,python,shell,Python,Shell,我看到类似的线程,但它不能解决我的问题,所以我尝试了一个新的。 我可以从终端的shell脚本文件运行我的脚本,但是当它来自cronjob时,我有一个错误。我可以根据需要提供补充信息。任何帮助都将不胜感激。我被困在这里太久了 我使用的是Anaconda3,所有模块都安装在Conda上 shell脚本: #!/bin/bash export PATH=/usr/local/bin:${PATH} echo $1 'report' if [ -z "$1" ]; then echo 'no p
#!/bin/bash
export PATH=/usr/local/bin:${PATH}
echo $1 'report'
if [ -z "$1" ]; then
echo 'no parameter about report type'
exit 1
fi
TOPDIR=~/extra/cronjobs
JOBDIR=unify_reports
REPORT_TYPE=$1
DAY=$(date +"%Y%m%d")
SOURCE_PATH_base=~/market_risk
SUB_PATH=$REPORT_TYPE/src/code
INTERAPI_PATH=control_tdrive_mail
OUTPATH="${SOURCE_PATH_base}/$REPORT_TYPE/output"
OUT=$(date +%Y-%m-%d -d "1 day ago")$REPORT_TYPE.xlsx
echo 'output ' $OUTPATH $OUT
FILENO_FLAG=SINGLE
SUBJECT="[DATA BATCH] $REPORT_TYPE daily report for ""${OUT}"
TO="xxxxxxxxxxxxx@xxxxx.com"
CC=${TO}
top_dir=${TOPDIR}/${JOBDIR}
dir=$top_dir
if [ -e $dir ]; then
echo 'exists' $dir
else
mkdir $dir
# log folder
dir=$dir/logs
if [ -e $dir ]; then
echo 'exists' $dir
else
mkdir $dir
fi
echo 'log dorectory created' $dir
fi
cd ${TOPDIR}/${JOBDIR}
(
# run each code to generate files
cd "${SOURCE_PATH_base}/${SUB_PATH}"
python3 $REPORT_TYPE.py
# output file link
dir=$top_dir/output_$REPORT_TYPE
echo $dir 'output link'
if [ -e $dir ]; then
echo 'exists' $dir
else
# create link to real path
echo 'no output link' $dir
echo 'real output path' ${OUTPATH}
cd ${TOPDIR}/${JOBDIR}
trap `ln -s "${OUTPATH}" "output_${REPORT_TYPE}"` 1 2 3 15
echo 'created output link' $dir
fi
# upload to gdrive
echo 'test' "${SOURCE_PATH_base}/${INTERAPI_PATH}"
cd "${SOURCE_PATH_base}/${INTERAPI_PATH}"
echo 'test2' "${OUTPATH}/${OUT}" "${TO}" "${FILENO_FLAG}" "${SUBJECT}"
python3 teamdrive_control.py Market_Risk $REPORT_TYPE "${OUTPATH}/${OUT}" "${TO}" "${FILENO_FLAG}" "${SUBJECT}"
) 2>&1 | xz -9ec > logs/${JOBDIR}-$(date +%s)_$REPORT_TYPE.log.xz
错误:
Traceback (most recent call last):
File "risk_position.py", line 3, in <module>
import psycopg2 as ps
File "/home/ubuntu/.local/lib/python3.6/site-packages/psycopg2/__init__.py", line 50, in <module>
from psycopg2._psycopg import ( # noqa
ImportError: libpq.so.5: cannot open shared object file: No such file or directory
/home/ubuntu/extra/cronjobs/unify_reports/output_risk_position output link
exists /home/ubuntu/extra/cronjobs/unify_reports/output_risk_position
test /home/ubuntu/market_risk/control_tdrive_mail
test2 /home/ubuntu/market_risk/risk_position/output/2020-02-16risk_position.xlsx SINGLE [DATA BATCH] risk_position daily report for 2020-02-16risk_position.xlsx
----------base src: /home/ubuntu/market_risk/control_tdrive_mail
Traceback (most recent call last):
File "teamdrive_control.py", line 10, in <module>
import common_config
File "/home/ubuntu/market_risk/control_tdrive_mail/common_config.py", line 15, in <module>
from rpt_utils import Parameters
File "/home/ubuntu/market_risk/control_tdrive_mail/utils/rpt_utils.py", line 1, in <module>
import pandas as pd
ModuleNotFoundError: No module named 'pandas'
编辑:“pip3安装”后出现新错误
Traceback (most recent call last):
File "risk_position2.py", line 3, in <module>
import psycopg2 as ps
File "/home/ubuntu/.local/lib/python3.6/site-packages/psycopg2/__init__.py", line 50, in <module>
from psycopg2._psycopg import ( # noqa
ImportError: libpq.so.5: cannot open shared object file: No such file or directory
/home/ubuntu/extra/cronjobs/unify_reports/output_risk_position2 output link
exists /home/ubuntu/extra/cronjobs/unify_reports/output_risk_position2
test /home/ubuntu/market_risk/control_tdrive_mail
test2 /home/ubuntu/market_risk/risk_position2/output/2020-02-16risk_position2.xlsx SINGLE [DATA BATCH] risk_position2 daily report for 2020-02-16risk_position2.xlsx
----------base src: /home/ubuntu/market_risk/control_tdrive_mail
Traceback (most recent call last):
File "teamdrive_control.py", line 10, in <module>
import common_config
File "/home/ubuntu/market_risk/control_tdrive_mail/common_config.py", line 16, in <module>
from db_utils import DBQuery
File "/home/ubuntu/market_risk/control_tdrive_mail/utils/db_utils.py", line 1, in <module>
import psycopg2 as ps
File "/home/ubuntu/.local/lib/python3.6/site-packages/psycopg2/__init__.py", line 50, in <module>
from psycopg2._psycopg import ( # noqa
ImportError: libpq.so.5: cannot open shared object file: No such file or directory
您的错误是:ModuleNotFoundError:没有名为“pandas”的模块,这意味着您的环境还没有pandas。使用以下方法安装库:
Python2.x:pip安装程序
Python3.x:pip3安装程序
然后再次运行。显示脚本的内容和错误。@NarūnasK我已经编辑过基本答案是交互式shell有一个更丰富的环境,它不会导出到非交互式shell。libpq.so.5在哪里?您在哪里安装了Pandas?用前者修改LD_LIBRARY_PATH,用后者修改PYTHONPATH应该可以让你克服这些错误,但可能会暴露出新的错误。因此,这基本上是相切的重复。请参阅,我还添加了一个编辑。Pandas安装在Conda中,我使用Conda,但当我安装它时Pandas错误消失了。Still’psycopg27与Anaconda和pip3一起安装,但未检测到。尽管如此,但实际上它并没有在“/home/ubuntu/.local”中查看,也没有在“/home/ubuntu/anaconda3/lib”中查看。我不明白为什么。你在conda安装pandas,但在python3上运行它。Changepython3 teamdrive\u control.py。。。到conda teamdrive_control.py。。。