Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 由于缺少模块,Cronjob无法工作_Python_Shell - Fatal编程技术网

Python 由于缺少模块,Cronjob无法工作

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

我看到类似的线程,但它不能解决我的问题,所以我尝试了一个新的。 我可以从终端的shell脚本文件运行我的脚本,但是当它来自cronjob时,我有一个错误。我可以根据需要提供补充信息。任何帮助都将不胜感激。我被困在这里太久了

我使用的是Anaconda3,所有模块都安装在Conda上

shell脚本:

#!/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。。。