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

Mac运行py2app打包时报/usr/sbin/authserver权限错误如何解决

解决方案

核心原因说明

该问题并非你漏配置py2app参数,是py2app依赖的modulegraph包更新后,目录扫描逻辑调整,触发了macOS系统完整性保护(SIP)的路径权限限制,/usr/sbin/authserver是受SIP保护的系统文件,禁止修改权限,不要尝试强行调整该路径的访问规则。


方案1:修改setup.py添加权限跳过逻辑(最快生效,无需修改依赖版本)

直接在你的setup.py文件最开头添加猴子补丁代码,拦截listdir的权限错误,跳过无权限路径,同时调整py2app配置缩小扫描范围:

# 新增的权限跳过补丁,放在文件最开头
import os
from modulegraph import zipio

_original_listdir = zipio.listdir
def _safe_listdir(path, *args, **kwargs):
    try:
        return _original_listdir(path, *args, **kwargs)
    except PermissionError:
        # 无权限路径直接返回空列表跳过扫描
        return []
zipio.listdir = _safe_listdir

# 原来的setup内容保留,修改OPTIONS配置
from setuptools import setup

APP = ['FileManagerApp.py']
DATA_FILES = [('data', '/Users/admin/Desktop/File_Manager/data/file_paths.txt')]
# 调整OPTIONS配置,排除不必要的扫描内容
OPTIONS = {
    # 替换为你项目实际用不到的模块,可按需增删
    'excludes': ['tkinter', 'test', 'unittest', 'matplotlib', 'django', 'numpy'],
    # 替换为你项目明确用到的模块,减少主动扫描范围
    'includes': ['os', 'shutil', 'json'],
    'scan_optional_extras': False
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

修改完成后直接执行python3 setup.py py2app即可正常打包。


方案2:降级依赖版本(恢复到之前正常打包的状态)

如果你不想修改setup.py代码,直接将依赖回退到之前的稳定版本即可:

  1. 先卸载当前版本的问题依赖:
    pip uninstall -y py2app modulegraph
  2. 安装经过验证的兼容版本:
    pip install py2app==0.28 modulegraph==0.19
  3. 清理旧缓存后重新打包:
    rm -rf build dist __pycache__ && python3 setup.py py2app

注意事项

  • 不要使用sudo执行打包命令,会导致生成的应用存在权限异常问题
  • 不要修改/usr/sbin路径下任何文件的权限,会触发系统安全风险甚至导致系统故障

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:54:05