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

macOS打tar包部署Flask出现._开头隐藏py文件报错如何解决

问题原因

这些._开头的文件是macOS生成的AppleDouble格式元数据文件,用来存储文件的扩展属性、资源分叉、Finder标记这类macOS独有的文件信息。
macOS自带的bsdtar打包时默认会把这类元数据单独打包成与原文件同名、加._前缀的伴随文件。你在本地macOS环境解压时,系统会自动将这些伴随文件内的元数据合并回对应原文件,随后自动删除._前缀文件,因此你本地无论通过快捷键显示隐藏文件、用find命令扫描、用第三方文件管理器查找,都看不到这些独立文件。但Linux系统不识别AppleDouble格式,解压时会把这些._文件原样释放到目录中,就会被lint检查、测试脚本扫描到,导致运行崩溃。
你之前执行dot_clean、本地查找._*文件无效,是因为打包前这些元数据存储在macOS文件系统的扩展属性位中,根本不是独立存在的磁盘文件,自然无法被扫描清理。

解决方案

从打包源头避免带入元数据文件(推荐)

打包时临时禁用macOS的元数据自动拷贝逻辑,在tar命令前加环境变量即可:

COPYFILE_DISABLE=1 tar -cvf project.tar myfolder

如果不想每次打包都手动加这个参数,可以把环境变量永久写入shell配置,后续所有打包操作都会自动生效:

  • 若使用macOS默认的zsh shell,执行:
echo 'export COPYFILE_DISABLE=1' >> ~/.zshrc && source ~/.zshrc
  • 若使用bash shell,执行:
echo 'export COPYFILE_DISABLE=1' >> ~/.bash_profile && source ~/.bash_profile

也可以通过Homebrew安装GNU版本的tar替代系统自带的bsdtar,GNU tar默认不会打包macOS专属的元数据文件:

brew install gnu-tar
# 后续打包使用gtar命令即可
gtar -cvf project.tar myfolder

清理服务器上已解压的残留文件

如果已经把带这类元数据文件的压缩包解压到服务器,直接在项目根目录执行命令批量删除所有._前缀文件即可:

find /mydeployedfolder -type f -name '._*' -delete

执行完成后可以再跑一遍find /mydeployedfolder -type f -name '._*'确认无残留,再执行lint检查、测试或启动服务就不会出现相关报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:03:24