python - 脚本运行良好,但由 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)
如何解决这个问题?
解决方案
它在交互式终端而不是 cron中工作几乎总是 PATH 或环境问题的证据。当您使用交互式会话时,配置文件和最终的 basrc 文件用于设置许多环境变量,包括 PATH。它们都不是从 cron 中使用的。所以好的做法是:
- 始终在可以从 cron 启动的脚本中使用绝对路径
- 在你的 crontab 中明确设置 PYTHON 环境变量,或者使用最小的 shell 先设置它们然后启动 python
推荐阅读
- powershell - Windows Powershell needs to print out information for a particular command regardless of whether it successfully executed or Not
- python - 删除数据框的元素(如果它们在列表中)
- c# - 有没有办法等到 oxyplot 中的情节完全刷新?
- flutter - 如何使用此按钮中的条件在颤动中显示警报对话框?
- java - 有人可以帮我找到 LeetCode 680 解决方案中的错误。有效回文 II - 一个著名的 Facebook 面试问题
- android-jetpack-compose - Android Jetpack Compose 列表使用重影图像重构
- c# - 子集模式实现
- spring - 尝试在 STS 中运行 gradle 项目
- sql - 我可以在 PostgreSQL 中跨表选择数据吗?
- python - 将值传递给下一个正向计算