You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下Cron执行Python脚本遇requests缺失及Git权限问题求助

问题1:Cron执行Python脚本提示ModuleNotFoundError: No module named 'requests'

原因

Cron运行时的环境变量与手动执行脚本的终端环境不一致,python3命令指向的Python解释器并非安装requests模块的版本,导致第三方库无法被找到。

解决方案

  1. 在终端执行以下命令,获取手动使用的Python解释器完整路径:
which python3

输出示例:/Users/nicolas/.pyenv/shims/python3或/usr/local/bin/python3。
2. 修改Cron任务配置,将python3替换为上述完整路径。修改后的Cron任务示例:

0 * * * *  cd /Users/nicolas/Documents/Development/Journal/; /Users/nicolas/.pyenv/shims/python3 create_json.py >> /Users/nicolas/Documents/Development/Journal/Log.txt 2>&1

问题2:Cron执行Git提交提示Permission denied (publickey)

原因

Cron运行时无法访问SSH私钥:未加载SSH代理,或环境变量未正确指向私钥文件,导致GitHub认证失败。

解决方案

方案1:在Shell脚本中指定SSH私钥路径

修改commit_git.sh,在Git命令前添加GIT_SSH_COMMAND指定私钥路径,确保Cron能读取到SSH私钥:

cd public
GIT_SSH_COMMAND="ssh -i /Users/nicolas/.ssh/id_rsa" git add -A
GIT_SSH_COMMAND="ssh -i /Users/nicolas/.ssh/id_rsa" git commit -m "Commit"
GIT_SSH_COMMAND="ssh -i /Users/nicolas/.ssh/id_rsa" git push origin main

注意:替换/Users/nicolas/.ssh/id_rsa为实际私钥路径,并确保文件权限为600(执行chmod 600 /Users/nicolas/.ssh/id_rsa设置)。

方案2:改用HTTPS远程仓库链接(无需SSH密钥)

将GitHub仓库远程链接从SSH格式改为HTTPS格式,并在macOS钥匙串保存凭证:

  1. 进入public目录,执行:
git remote set-url origin https://github.com/你的用户名/你的仓库名.git
  1. 手动执行一次git push,在弹出的钥匙串窗口选择保存凭证,后续Cron执行时可自动读取完成认证。

内容的提问来源于stack exchange,提问作者Nicolas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:08:41