Crontab无法在Mac OS上运行python

时间:2020-06-11 17:10:50

标签: python macos cron

我已经找到了所有可以找到的答案,并尝试了所有方法,但是我仍然无法让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然后将“来自Python的Hello”写入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. shell脚本的某些部分在由crontab运行时可以正确执行

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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