crontab即使在添加path之后也无法使用anaconda python(cron calls.sh文件,该文件又调用.py文件)

2024-09-29 19:33:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个私信:

1 11 * * * /home/ubuntu/anaconda3/bin/python /home/ubuntu/ga_data/gaV4/tva_gaApiUpdate.sh > /dev/null 2 >> tvaUpdater.log

下面是.sh文件:

^{pr2}$

日志文件的输出是:

Traceback (most recent call last):
  File "gaAPIWorkingVersion.py", line 13, in <module>
    from apiclient.discovery import build
ImportError: No module named apiclient.discovery

我用cron调用一个.sh文件,这个文件又调用一个.py文件。我这样做是因为在.sh文件中,我用cd更改目录,这样就不必将.py脚本中的路径更改为绝对路径。这是因为我的较大的.py脚本从它的目录中打开了几个文件。因此,我不直接在cron中调用python,而是通过首先调用.sh文件来间接调用。在

当我自己直接运行.sh或.py脚本时,一切正常。只有当cron试图这么做时,我才得到上面的错误。在

如果我在终端中which python,我得到/home/ubuntu/anaconda3/bin/python。在

我试着将这行代码添加到.sh文件中,如下所示:

#!/bin/bash
cd /home/ubuntu/ga_data/gaV4
python /home/ubuntu/anaconda3/bin/python gaAPIWorkingVersion.py

但这也带来了一个错误。在

如何让cron使用正确版本的python(本例中是anaconda)?在


Tags: 文件py脚本homedatabinubuntush
1条回答
网友
1楼 · 发布于 2024-09-29 19:33:09

尝试将您的cron更改为:

1 11 * * * /home/ubuntu/ga_data/gaV4/tva_gaApiUpdate.sh > /dev/null 2 >> tvaUpdater.log

和脚本

^{pr2}$

确保scip直接运行的用户与cronjob的用户相同。 如果仍有问题,请检查Cannot Import Python MySQL module when running a script using crontab

相关问题 更多 >

    热门问题