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

MacOS Ventura Rosetta环境下装fontconfig仍遇fontconfig-1找不到的OSError

解决Django migrate报错找不到fontconfig-1的问题

问题背景

在M1 Mac(MacOS 13.0.1 Ventura)的Rosetta iTerm中执行python manage.py migrate时,arm64和i386架构终端均报错:

OSError: ctypes.util.find_library() did not manage to locate a library called 'fontconfig-1'

已通过对应架构的Homebrew安装fontconfig,但问题依旧,测试代码显示find_library('fontconfig')能找到路径,find_library('fontconfig-1')返回None。

核心原因

fontconfig-1并非独立包,它就是fontconfig库的带版本号命名形式,系统安装的fontconfig库文件名为libfontconfig.dylib,但程序在查找时指定了带版本号的名称,导致匹配失败。

解决方法

1. 创建符号链接匹配命名

针对不同架构的终端,分别为fontconfig库创建带版本号的符号链接:

  • x86_64架构(Rosetta终端):
    sudo ln -s /usr/local/lib/libfontconfig.dylib /usr/local/lib/libfontconfig-1.dylib
    
  • arm64架构终端:
    sudo ln -s /opt/homebrew/lib/libfontconfig.dylib /opt/homebrew/lib/libfontconfig-1.dylib
    

2. 设置环境变量指定库路径

在终端中临时设置环境变量,让ctypes能正确找到库:

  • x86_64架构:
    export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
    
  • arm64架构:
    export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH
    

若要永久生效,可将上述命令添加到~/.zshrc或~/.bashrc文件末尾,保存后执行source ~/.zshrc(或对应配置文件)生效。

3. 验证Python与Homebrew架构匹配

确保当前终端使用的Python和Homebrew架构一致,避免跨架构调用库的问题:

  1. 查看Python架构:
    file $(which python)
    
  2. 查看Homebrew架构:
    brew --prefix
    
    • x86_64的Homebrew路径为/usr/local
    • arm64的Homebrew路径为/opt/homebrew
      若架构不匹配,需切换对应架构的Python环境(比如用pyenv管理不同架构的Python版本)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:05:17