【问题标题】:Crontab issues with python scriptpython脚本的crontab问题
【发布时间】:2017-08-06 23:26:49
【问题描述】:

我有一个可以从命令行完美运行的脚本:

/home/anaconda2/bin/python /project_folder/script.py

我在下面添加了一些细节:

$ echo $PYTHONPATH
:/project_folder/

$ which python
/home/anaconda2/bin/python

完美无缺地运行脚本。

然后在 crontab 中(对于另一个没有本地导入问题的脚本已经成功)我无法运行该脚本。

不工作的代码的crontab:

PYTHONPATH=/project_folder
* * * * * /home/anaconda2/bin/python /project_folder/script.py

什么都没有发生。这让我和我的大部分时间都在试图解决这个问题 - 非常感谢任何帮助。

【问题讨论】:

  • 确保您的脚本需要的所有环境变量都已定义。 Cron 不会运行交互式登录运行的所有相同启动脚本。
  • 这里有一些对静默失败的 cron 有用的提示:unix.stackexchange.com/questions/207/…
  • 我该如何解决@GreenMatt(顺便说一句)
  • 不确定你想弄清楚什么:那个 cron 没有运行你交互式登录的所有启动脚本?这来自阅读文档,这通常来自于试图弄清楚为什么你的脚本不能从 cron 运行! ;-) 需要哪些环境变量?反复试验或检查您的启动脚本是我通常的解决方法。此外,cron 可能正在通过电子邮件发送结果或记录它们。我建议您查看您的 .bashrc(或等效文件),看看您是否正在更改 PATH 或 PYTHONPATH 变量作为起点。
  • @SteelyDanish:一种方法是让 cron 调用一个 Bash 包装脚本,该脚本设置 PATH,然后运行您的 Python 脚本。或者,有一些方法可以使用 Python 脚本设置环境;看看:stackoverflow.com/questions/5971312/…

标签: python import crontab anaconda pythonpath


【解决方案1】:

我通过创建包装外壳脚本解决了这个问题。丑陋的是我每次都在导出 python 路径,但它可以工作。

#!/bin/bash
export PYTHONPATH="${PYTHONPATH}:/project_folder"
source ~/.bash_profile
cd /project_folder && /my/anaconda/location/bin/python /project_folder/cript.py

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2013-06-02
    • 2015-08-18
    • 2015-10-05
    • 2017-12-16
    • 1970-01-01
    相关资源
    最近更新 更多