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

Python 3.12升级后Homebrew安装OpenJDK失败求助

解决Homebrew安装OpenJDK时因Python 3.12缺失distutils导致的glib编译失败问题

尝试通过Homebrew安装OpenJDK(多个版本均出现相同问题)时,依赖的glib包编译失败,核心错误为:
ModuleNotFoundError: No module named 'distutils'

完整错误日志:

==> Installing openjdk@17 dependency: glib
==> Patching
==> Applying hardcoded-paths.diff
patching file 'gio/xdgmime/xdgmime.c'
patching file 'glib/gutils.c'
==> meson setup build --default-library=both --localstatedir=/Users/aaronblythe/homebrew/var -Dgio_module_dir=/Users/aaronblythe/homebrew/lib/gio/modules -Dbsymbolic_functions=false -Ddtrace=false -Druntime_dir=/Users/aaronblythe/homebrew/var
==> meson compile -C build --verbose
Last 15 lines from /Users/aaronblythe/Library/Logs/Homebrew/glib/02.meson:
ModuleNotFoundError: No module named 'distutils'
[5/1358] /private/tmp/glib-20231023-14634-16y3dzi/glib-2.78.0/tools/gen-visibility-macros.py 2.78.0 versions-macros ../glib/gversionmacros.h.in glib/gversionmacros.h
[6/1358] /private/tmp/glib-20231023-14634-16y3dzi/glib-2.78.0/tools/gen-visibility-macros.py 2.78.0 visibility-macros GLIB glib/glib-visibility.h
[7/1358] /private/tmp/glib-20231023-14634-16y3dzi/glib-2.78.0/tools/gen-visibility-macros.py 2.78.0 visibility-macros GOBJECT gobject/gobject-visibility.h
[8/1358] /Users/aaronblythe/homebrew/opt/meson/bin/meson --internal exe --capture gobject/glib-enumtypes.h -- /Users/aaronblythe/homebrew/opt/python@3.12/bin/python3.12 gobject/glib-mkenums --template ../gobject/glib-enumtypes.h.template ../gobject/../glib/gunicode.h
[9/1358] /private/tmp/glib-20231023-14634-16y3dzi/glib-2.78.0/tools/gen-visibility-macros.py 2.78.0 visibility-macros GMODULE gmodule/gmodule-visibility.h
[10/1358] clang -Iglib/tests/getpwuid-preload.dylib.p -Iglib/tests -I../glib/tests -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O3 -D_GNU_SOURCE -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wimplicit-fallthrough -Wmisleading-indentation -Wmissing-field-initializers -Wnonnull -Wunused -Wno-unused-parameter -Wno-cast-function-type -Wno-pedantic -Wno-format-zero-length -Wno-variadic-macros -Werror=format=2 -Werror=init-self -Werror=missing-include-dirs -Werror=pointer-arith -Werror=unused-result -Wstrict-prototypes -Wno-bad-function-cast -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=pointer-sign -Wno-string-plus-int -MD -MQ glib/tests/getpwuid-preload.dylib.p/getpwuid-preload.c.o -MF glib/tests/getpwuid-preload.dylib.p/getpwuid-preload.c.o.d -o glib/tests/getpwuid-preload.dylib.p/getpwuid-preload.c.o -c ../glib/tests/getpwuid-preload.c
[11/1358] clang -Iglib/libcharset/libcharset.a.p -Iglib/libcharset -I../glib/libcharset -I. -I.. -fvisibility=hidden -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O3 -D_GNU_SOURCE -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wimplicit-fallthrough -Wmisleading-indentation -Wmissing-field-initializers -Wnonnull -Wunused -Wno-unused-parameter -Wno-cast-function-type -Wno-pedantic -Wno-format-zero-length -Wno-variadic-macros -Werror=format=2 -Werror=init-self -Werror=missing-include-dirs -Werror=pointer-arith -Werror=unused-result -Wstrict-prototypes -Wno-bad-function-cast -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=pointer-sign -Wno-string-plus-int '-DGLIB_CHARSETALIAS_DIR="/Users/aaronblythe/homebrew/Cellar/glib/2.78.0/lib"' -MD -MQ glib/libcharset/libcharset.a.p/localcharset.c.o -MF glib/libcharset/libcharset.a.p/localcharset.c.o.d -o glib/libcharset/libcharset.a.p/localcharset.c.o -c ../glib/libcharset/localcharset.c
[12/1358] clang -Igio/xdgmime/libxdgmime.a.p -Igio/xdgmime -I../gio/xdgmime -I. -I.. -fvisibility=hidden -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O3 -D_GNU_SOURCE -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wimplicit-fallthrough -Wmisleading-indentation -Wmissing-field-initializers -Wnonnull -Wunused -Wno-unused-parameter -Wno-cast-function-type -Wno-pedantic -Wno-format-zero-length -Wno-variadic-macros -Werror=format=2 -Werror=init-self -Werror=missing-include-dirs -Werror=pointer-arith -Werror=unused-result -Wstrict-prototypes -Wno-bad-function-cast -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=pointer-sign -Wno-string-plus-int -DHAVE_CONFIG_H -DXDG_PREFIX=_gio_xdg -MD -MQ gio/xdgmime/libxdgmime.a.p/xdgmimealias.c.o -MF gio/xdgmime/libxdgmime.a.p/xdgmimealias.c.o.d -o gio/xdgmime/libxdgmime.a.p/xdgmimealias.c.o -c ../gio/xdgmime/xdgmimealias.c
[13/1358] clang -Igio/xdgmime/libxdgmime.a.p -Igio/xdgmime -I../gio/xdgmime -I. -I.. -fvisibility=hidden -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O3 -D_GNU_SOURCE -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wimplicit-fallthrough -Wmisleading-indentation -Wmissing-field-initializers -Wnonnull -Wunused -Wno-unused-parameter -Wno-cast-function-type -Wno-pedantic -Wno-format-zero-length -Wno-variadic-macros -Werror=format=2 -Werror=init-self -Werror=missing-include-dirs -Werror=pointer-arith -Werror=unused-result -Wstrict-prototypes -Wno-bad-function-cast -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=pointer-sign -Wno-string-plus-int -DHAVE_CONFIG_H -DXDG_PREFIX=_gio_xdg -MD -MQ gio/xdgmime/libxdgmime.a.p/xdgmimeglob.c.o -MF gio/xdgmime/libxdgmime.a.p/xdgmimeglob.c.o.d -o gio/xdgmime/libxdgmime.a.p/xdgmimeglob.c.o -c ../gio/xdgmime/xdgmimeglob.c
[14/1358] clang -Igio/xdgmime/libxdgmime.a.p -Igio/xdgmime -I../gio/xdgmime -I. -I.. -fvisibility=hidden -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O3 -D_GNU_SOURCE -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wimplicit-fallthrough -Wmisleading-indentation -Wmissing-field-initializers -Wnonnull -Wunused -Wno-unused-parameter -Wno-cast-function-type -Wno-pedantic -Wno-format-zero-length -Wno-variadic-macros -Werror=format=2 -Werror=init-self -Werror=missing-include-dirs -Werror=pointer-arith -Werror=unused-result -Wstrict-prototypes -Wno-bad-function-cast -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=pointer-sign -Wno-string-plus-int -DHAVE_CONFIG_H -DXDG_PREFIX=_gio_xdg -MD -MQ gio/xdgmime/libxdgmime.a.p/xdgmime.c.o -MF gio/xdgmime/libxdgmime.a.p/xdgmime.c.o.d -o gio/xdgmime/libxdgmime.a.p/xdgmime.c.o -c ../gio/xdgmime/xdgmime.c
[15/1358] clang -Igio/xdgmime/libxdgmime.a.p -Igio/xdgmime -I../gio/xdgmime -I. -I.. -fvisibility=hidden -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O3 -D_GNU_SOURCE -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wimplicit-fallthrough -Wmisleading-indentation -Wmissing-field-initializers -Wnonnull -Wunused -Wno-unused-parameter -Wno-cast-function-type -Wno-pedantic -Wno-format-zero-length -Wno-variadic-macros -Werror=format=2 -Werror=init-self -Werror=missing-include-dirs -Werror=pointer-arith -Werror=unused-result -Wstrict-prototypes -Wno-bad-function-cast -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=pointer-sign -Wno-string-plus-int -DHAVE_CONFIG_H -DXDG_PREFIX=_gio_xdg -MD -MQ gio/xdgmime/libxdgmime.a.p/xdgmimecache.c.o -MF gio/xdgmime/libxdgmime.a.p/xdgmimecache.c.o.d -o gio/xdgmime/libxdgmime.a.p/xdgmimecache.c.o -c ../gio/xdgmime/xdgmimecache.c
ninja: build stopped: subcommand failed.
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /Users/aaronblythe/homebrew/Library/Homebrew/shims/mac/super/ninja -C /private/tmp/glib-20231023-14634-16y3dzi/glib-2.78.0/build -v

Do not report this issue to Homebrew/brew or Homebrew/homebrew-core!

问题原因

Python 3.12已正式移除distutils模块,而Homebrew构建glib的脚本尚未适配该变更,仍依赖distutils完成编译流程,导致安装中断。

解决方案

方案1:安装setuptools(包含distutils兼容包)

distutils目前作为setuptools的子模块维护,执行以下命令安装即可补全依赖:

brew install setuptools

安装完成后,重新执行OpenJDK安装命令:

brew install openjdk@17

方案2:临时切换到Python 3.11版本

如果不想安装setuptools,可以让Homebrew使用仍包含distutils的Python 3.11进行构建:

# 安装Python 3.11
brew install python@3.11
# 临时将Python 3.11设为当前终端默认
export PATH="$(brew --prefix python@3.11)/bin:$PATH"
# 安装目标OpenJDK版本
brew install openjdk@17

方案3:强制使用预编译的glib包

跳过本地编译,直接安装Homebrew提供的预编译glib包:

brew reinstall --force-bottle glib

完成后再尝试安装OpenJDK。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:27:31