我的 Python3 是装在 /opt/homebrew/bin/ 里面的,我发现在 crontab 中执行 Python 脚本。
使用的是 /usr/bin/python3,这个的版本是 3.9.6。而我用 homebrew 装的是 3.11.2。
如果想让 crontab 优先使用 homebrew 的 Python3,有两种方法。
1、直接写出完整路径
1 7 * * * /opt/homebrew/bin/python3 /path/to/myscript.py |
2、在 crontab 头部定义环境变量
PATH=/opt/homebrew/bin:/usr/bin:/bin |
当执行脚本时,会按照 PATH 环境变量的先后顺序在每个目录中查找命令,找到第一个版本即执行。
因此这里我把 /opt/homebrew/bin 放最前面。可以写个脚本测试一下 Python 版本。
import sys |
定义环境变量的好处,就是如果我们有多个脚本需要执行,就可以在 crontab 里面省掉很多字符。例如我现在这种情况,就不用在 crontab 中写一堆 /opt/homebrew/bin/
如果我们要读取用户目录下的脚本,可以使用 $HOME
变量,例如
python3 $HOME/myscript.py |
那么我们也可以直接在 crontab 开头,加载 shell 配置文件,例如我使用的是 zsh,可以在 crontab 开头加上
source $HOME/.zshrc |
这样的好处是,在 shell 能执行的命令,现在 crontab 应该也可以。而且也能使用 alias。所以看个人需要咯。