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

Flet v0.23.2在MacOS下访问assets文件触发PathAccessException求助

解决Flet v0.23.2在MacOS下读取assets文件的权限错误

针对你遇到的PathAccessException: Operation not permitted错误,结合MacOS的权限特性,给你几个可行的排查和解决步骤:

1. 检查MacOS隐私权限

MacOS的沙箱机制可能阻止运行脚本的终端/IDE访问文件目录:

  • 打开「系统设置」→「隐私与安全性」→「文件与文件夹」
  • 找到你用来运行脚本的程序(比如Terminal、VS Code),确保它被授予了访问assets目录所在父文件夹的权限
  • 重启该程序后再尝试运行脚本

2. 确认assets路径与Flet配置匹配

方式一:通过代码指定assets_dir

确保assets_dir路径是相对于脚本的正确路径,同时Image的src不要带/assets前缀:

import flet as ft

def main(page: ft.Page):
    page.title = "Images Example"
    page.theme_mode = ft.ThemeMode.LIGHT
    page.padding = 50
    page.update()

    img = ft.Image(
        src="icon.png",  # 直接写文件名,无需/assets前缀
        width=100,
        height=100,
        fit=ft.ImageFit.CONTAIN,
    )
    images = ft.Row(expand=1, wrap=False, scroll="always")

    page.add(img, images)
    page.update()

ft.app(target=main, assets_dir="assets")  # assets目录需与脚本同层级

方式二:通过命令行指定assets路径

运行时直接传入正确的assets目录路径(无需占位符):

flet run -a ./assets myapp.py

如果assets在脚本的父目录,就写../assets,确保路径准确。

3. 验证文件与目录的实际可访问性

  • 用终端进入脚本所在目录,执行cat assets/icon.png,如果能正常输出文件内容,说明文件本身权限没问题;如果报错,检查目录和文件的权限:
    chmod -R 755 ./assets  # 给assets目录及子文件设置可读权限
    
  • 也可以尝试用绝对路径直接访问文件,验证是否能读取:
    img = ft.Image(
        src="/Users/yourname/path/to/project/assets/icon.png",  # 替换为你的实际绝对路径
        width=100,
        height=100,
        fit=ft.ImageFit.CONTAIN,
    )
    

如果绝对路径能正常显示图片,说明是相对路径或Flet的assets配置问题。

4. 排查系统完整性保护(SIP)影响

如果以上方法都无效,可能是MacOS的SIP限制了文件访问。可以临时关闭SIP测试(注意:关闭SIP会降低系统安全性,测试后建议重新开启):

  1. 重启Mac,按住Command + R进入恢复模式
  2. 打开「实用工具」→「终端」,执行csrutil disable
  3. 重启Mac后再次运行脚本
  4. 测试完成后,重复步骤1-2,执行csrutil enable重新开启SIP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:57:24