在 macOS 上,推荐使用 launchd 来实现 Flask 项目的开机自启。launchd 是 macOS 的系统服务管理框架,可以方便地管理用户级或系统级的后台任务。
确认你的 Flask 项目路径和 Python 环境。假设:
/Users/yourname/myflaskappapp.py(假设使用 app.run() 或类似)/Users/yourname/myflaskapp/venv/bin/python3注意:Flask 开发服务器(app.run())通常不建议用于生产环境,但自启测试或内部使用是可行的。如需生产,建议使用 gunicorn 等 WSGI 服务器,但 launchd 配置原理类似。
plist 文件是 launchd 的配置文件,扩展名为 .plist。
在用户级(开机后当前用户登录时启动)时,文件应放在 ~/Library/LaunchAgents/ 目录下。如果希望系统级启动(无需登录),则放在 /Library/LaunchDaemons/,但需要 sudo 权限且启动用户为 root,通常不推荐用于 Flask。
这里以用户级自启为例。
mkdir -p ~/Library/LaunchAgents
nano ~/Library/LaunchAgents/com.yourname.flaskapp.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>com.yourname.flaskapp</string>
<key>ProgramArguments</key>
<array>
<string>/Users/yourname/myflaskapp/venv/bin/python3</string>
<string>/Users/yourname/myflaskapp/app.py</string>
</array>
<key>WorkingDirectory</key>
<string>/Users/yourname/myflaskapp</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/Users/yourname/myflaskapp/logs/flask.log</string>
<key>StandardErrorPath</key>
<string>/Users/yourname/myflaskapp/logs/flask.err</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
</dict>
</plist>
python 完整路径。true,表示启动时立即运行。true,进程意外退出时自动重启。logs 目录,便于调试。PATH 环境变量,确保能找到系统命令。使用 launchctl 命令加载并启动服务:
# 加载服务(如果已加载则先卸载再加载)
launchctl load ~/Library/LaunchAgents/com.yourname.flaskapp.plist
# 启动服务(如果 RunAtLoad 为 true,则加载后即启动)
launchctl start com.yourname.flaskapp
检查服务状态:
launchctl list | grep com.yourname.flaskapp
如果输出中包含服务名且状态为 0,表示正常运行。
tail -f ~/myflaskapp/logs/flask.log 和 flask.err,确认程序正常启动。ProgramArguments 中的命令,确保能在终端中启动 Flask。重启电脑,登录后检查 Flask 服务是否自动运行。访问 http://localhost:5000(或你配置的端口)确认。
如果服务未启动,可以:
~/Library/LaunchAgents/ 目录下。launchctl load 重新加载。log show --predicate 'subsystem == "com.apple.launchd"' | grep com.yourname.flaskapp常用命令:
# 停止服务
launchctl stop com.yourname.flaskapp
# 卸载服务(禁用开机自启)
launchctl unload ~/Library/LaunchAgents/com.yourname.flaskapp.plist
# 重新加载(修改 plist 后使用)
launchctl unload ~/Library/LaunchAgents/com.yourname.flaskapp.plist
launchctl load ~/Library/LaunchAgents/com.yourname.flaskapp.plist
app.run(port=5001) 避免冲突。FLASK_APP),可在 EnvironmentVariables 中设置。python 可执行。app.run())不适合生产,建议使用 gunicorn 或 waitress,然后通过 launchd 启动。如果不想用 launchd,也可以在“系统偏好设置” -> “用户与群组” -> “登录项”中添加启动脚本(如 .sh 文件)。但该方法不提供自动重启、日志管理等功能,不如 launchd 灵活。
按照以上步骤,你的 Flask 项目就能在 macOS 上实现开机自启了。如果遇到问题,请检查日志和 plist 配置。
想买混动车,到底应该怎么选
横版国风4V4轻竞技手游《闹闹天宫》攻略
Snagit v2025.2.0 for Mac 最新下载和使用指南
Excel 2021 制作大头针图,简单几步展示直观数据
鑫谷数智 DM-850G 评测:499 元买 850W 小尺寸数字化电源值吗?
AutoCAD2026查看文字字体的方法
如何在 Excel2024 中制作带目标值对比的柱形图
Windows 11 Build 27909 新版发布
日本记者伊藤诗织纪录片《黑箱日记》BD日语中字BT迅雷
智谱GLM 4.5接入Claude Code 教程
微软不再支持永久关闭自动更新
孩子几岁能用洗面奶和祛痘护肤品