为什么我不能在 Crontab 中使用 Python 3?

Why am I not able to use Python 3 in a Crontab?

例如,我在路径 home/pi 上放置了一个简单的程序进行测试。

我的 crontab 脚本是

* * * * * /pi/testcron.py

我还没有得到任何结果。我尝试了其他脚本 - 此处推荐 - 但没有成功。

感谢我能得到的任何支持。

Cron 使用 sh shell 运行脚本。它不知道您的 python 配置。在您的脚本之前放置 python 的完整路径。

* * * * * /path/to/python3/python/Python-3.6.1/python /home/pi/testcron.py

如果您不知道 python 路径,请使用 which python 获取它。

根据评论,您似乎希望看到 print 函数的输出。问题是,由于 cron 运行ning 另一个 shell/terminal 中的脚本,你不会看到 print 输出,即使它 运行ning 正确。例如,如果您打开两个终端 windows,并且在一个 window 中手动 运行 您的脚本,您将不会在另一个中看到您的打印输出。为了留下持久的效果,对打印输出使用重定向。这将打开一个新文件,您可以在 cronjob 运行.

后检查该文件

正如其他人所说,您可能需要包含 python 安装的完整路径。常见的 sys 安装路径是 /usr/bin/python3。所以,你应该这样做:

* * * * * /usr/bin/python3 /home/pi/testcron.py > /home/my_output.txt

最后一部分 > /home/my_output.txt 会将 print 函数的输出重定向到文件 /home/my_output.txt。在 crontab 运行s 之后,您应该能够打开文件和 print 命令的输出。

请不要 copy/paste 这完全是原样,并期望它在不进行完整性检查的情况下工作!确保目录正确! 例如,/home/pi/testcron.py 应该是 python 文件的完整路径。我们只是在猜测您的文件结构,我们不知道它长什么样。

你的程序位于home/pi,所以你的Crontab脚本应该是(你应该输入完整路径)

* * * * *  /**home**/pi/testcron.py

要确定您的完整路径,请在终端中输入 pwd 并按回车键。

$pwd
/home/pi