我是 Python 新手,我编写了我的第一个程序,并在一天中运行几次。该文件名为 quran_review_scheduler.py,位于我的用户目录“usr/dev/python/learning_python”下的文件夹中。当我想运行此文件时,我打开终端并将目录更改为 learning_python 并运行 python3 quran_review_scheduler.py,它运行良好。现在我想让这个脚本每小时运行一次。
我做了一些研究并发现 launchd - 我读过的 2 个教程是:
https://nathangrigg.com/2012/07/schedule-jobs-using-launchd
然后我创建了一个包含以下内容的 plist。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>quran_scheduler</string> <key>ProgramArguments</key> <array> <string>/Users/siraj/Dev/python/learning-python/quran_review_scheduler.py</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
然后我使用了以下语句:
launchctl load /Users/siraj/Library/LaunchAgents/quran_scheduler.plist
我没有得到任何输出,因此我假设该作业将启动,但它没有启动。然后我明确调用了启动,但什么也没发生。
launchctl load /Users/siraj/Library/LaunchAgents/quran_scheduler.plist
然后,我开始四处寻找是否还有其他问题,然后发现了这个帖子 -如何使 Python 文件在 macOS Sierra 上可执行?
因此,我复制了 quran_review_scheduler.py 并将其命名为 quran_review_scheduler.command。然后我执行 chmod +x quran_review_scheduler.command 使其可执行。然后,我将顶部的 shebang 行更改为指向 python3
#!/usr/bin/env python3
当我双击它时,它抱怨说找不到日期解析器 - 我所知道的只是当我从终端运行程序时没有使用这个python3。然后,通过反复试验,我发现这里还有另一个python3,并将其作为第一行。
#!/Library/Frameworks/Python.framework/Versions/3.8/bin/python3
现在,当我双击该文件时,dateparser 错误消失了,但它抱怨说无法找到与 python 文件存储在同一目录中的 credentials.json 文件。
因此,我的问题是:
- 如何在我的 Mac 上找到所有不同的 Python 实例以及如何只有一个版本的 Python3?
- 如何从 learning_python 目录运行上述命令文件以便找到 credentials.json 文件
- 我的 launchd 配置有什么问题?我如何知道它是否正在运行?
我已经尽力阅读各种资源并自行取得进展,但却遇到了困难,因此非常感谢任何指点。