首页 > 解决方案 > 脚本运行良好,但由 cron 运行时无法进行 Dropbox 上传

问题描述

我在我的树莓派上运行一个 python 脚本,它在 SQL 数据库中进行一些修改,写入一个日志,并将所有内容上传到 Dropbox。当我使用命令行启动它时,一切正常。

更新:当我使用 cron 启动它时,一切正常,除了 Dropbox 上传。日志中没有错误消息。该文件根本没有出现在我的保管箱中。

这是我正在使用的代码:

from subprocess import call
data = "/home/pi/scripts/Dropbox-Uploader/dropbox_uploader.sh upload /home/pi/scripts/database.db /"
call ([data], shell=True)

如何解决这个问题?

标签: pythoncron

解决方案


它在交互式终端而不是 cron中工作几乎总是 PATH 或环境问题的证据。当您使用交互式会话时,配置文件和最终的 basrc 文件用于设置许多环境变量,包括 PATH。它们都不是从 cron 中使用的。所以好的做法是:

  • 始终在可以从 cron 启动的脚本中使用绝对路径
  • 在你的 crontab 中明确设置 PYTHON 环境变量,或者使用最小的 shell 先设置它们然后启动 python

推荐阅读