Crontab 无法在 Mac OS 上运行 python

2024-01-21

我已经找到了我能找到的每一个答案并尝试了一切,但我仍然无法让我的 crontab 运行 python。我什至创建了一个 shell 脚本来运行 python,认为隔离会有所帮助,但它仍然不起作用。

我在 crontab 中有以下条目

* * * * * echo "hello" >> /tmp/test2.txt
* * * * * work.sh

第一行每分钟运行一次,以便我可以验证 cron 是否正在运行。我已经验证它正在运行。每分钟我都会在 test2.txt 中看到一个新的“hello”

第二行运行以下名为 work.sh 的脚本

#! /usr/bin/env zsh
echo "Hello World!" >> /tmp/test2.txt
/opt/miniconda3/bin/python3.7 hellopy.py

然后 hellopy.py 将“Hello from Python”写入 test2.txt,如下所示:

with open('/tmp/test2.txt','a') as test_txt:
        test_txt.write("Hello from Python")

当我手动运行 work.sh 时,我在 test2.txt 中得到了我所期望的结果:

Hello World!
Hello from Python

但是,当我让 cron 运行一段时间并查看 test.txt 时,我看到的只是来自直接 cron 行的条目,然后是来自 work.sh 的 echo 命令。 python 行不会写入文件。文本“Hello from Python”不显示。

hello
Hello World!
hello
Hello World!
hello
Hello World!

我检查了python文件的权限-rwxr-xr-x和文本文件-rwxrwxrwx他们看起来很好。

所以我知道

  1. python 代码可以工作
  2. shell脚本可以成功运行python代码
  3. crontab 正在运行
  4. crontab可以运行shell脚本
  5. 由 crontab 运行时,shell 脚本的某些部分可以正确执行

但由于某种原因,当 crontab 运行 shell 脚本时,python 命令不起作用。我也尝试过以下方法,但都不起作用。

  1. 直接从 crontab 中的一行运行 python 脚本,而不是通过 shell 脚本。
  2. 在 shebang 中使用“bash”而不是“zsh”
  3. 在不同路径 /usr/bin/python3 中使用不同的 python 副本

我在所有搜索中不断遇到的解决方案与文件权限和绝对路径有关。我已经尝试了所有可能的组合,但似乎没有任何帮助。我完全被困住了。任何帮助,将不胜感激。


从这里获取@chepner 的解决方案以供后代使用:

问题是 cron 期望在我的主目录中找到我的 python 文件,但我已将 python 文件保存在另一个目录中。将文件移至主目录后,一切正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Crontab 无法在 Mac OS 上运行 python 的相关文章