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

Flask网站在Windows 11正常运行,MacOS拉取GitHub代码后出现404错误的技术求助

解决Flask在MacOS上出现404但Windows正常的问题

看起来你遇到了跨系统开发的典型坑——Windows和MacOS的文件系统差异导致的问题,我帮你梳理几个最可能的原因和解决办法:

1. 优先排查:文件名大小写不匹配

Windows的NTFS系统不区分文件名大小写,但MacOS的APFS默认是严格区分的。看你的routes.py里的模板引用:

  • 路由/Week-purchase对应render_template("Week-Purchase.html")(文件名里的Purchase首字母大写)
  • 路由/Core-purchase对应render_template("Core-Purchase.html")
  • 类似的还有Plus-Purchase.html、Premium-Purchase.html

如果GitHub仓库里的这些模板文件名是小写(比如week-purchase.html),Windows会自动忽略大小写匹配文件,但MacOS会直接找不到,这时候虽然Flask服务能启动,但访问对应路由时会因为找不到模板间接触发404(或者有时候是500,但也可能表现为404)。

解决办法:

  • 统一代码中模板文件名的大小写,确保和仓库里的文件完全一致;
  • 或者直接修改仓库中的文件名,让它们和代码里的引用严格对应(推荐这个,避免后续踩同样的坑)。

2. 确认路由是否成功注册

有时候Mac上的Python模块导入可能因为缓存或路径问题,导致路由没有被正确注册。你可以在app.py里加一行打印,看看当前注册的路由列表:

from flask import Flask
import routes
app = Flask(__name__)
app.secret_key = 'your-secret-key-here'
routes.register_routes(app)

# 新增:打印所有注册的路由
print("当前注册的路由:", [rule.rule for rule in app.url_map.iter_rules()])

if __name__ == '__main__':
    app.run(debug=True)

运行后看控制台输出,如果某个路由(比如/pricing、/register)不在列表里,说明路由注册过程有问题——大概率是register_routes函数里的代码缩进错误,或者import routes时出现了隐性报错(可以把import routes改成from . import routes试试,确保相对导入正确)。

3. 检查Flask的模板路径是否正确

Flask默认会在当前运行目录下的templates文件夹找模板。如果你在Mac上运行app.py时的工作目录不是项目根目录,就会找不到模板。

你可以在app.py里打印模板文件夹的路径:

print("模板文件夹路径:", app.template_folder)

如果路径不对,要么切换到项目根目录再运行app.py,要么初始化Flask时指定绝对路径:

import os
app = Flask(__name__, template_folder=os.path.join(os.path.dirname(__file__), 'templates'))

4. 清除缓存并重启服务

Mac上的Python有时候会缓存旧的模块文件,导致代码修改不生效。你可以:

  • 删除项目目录下的__pycache__文件夹;
  • 完全关闭Flask服务后重新启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 06:40:19