環境
- macOS Monterey 12.3.1
- Command Line Tools for Xcode 13.3.1 (ソフトウェアアップデートでインストール)
pkgutil --pkg-info=com.apple.pkg.CLTools_macOS_SDK
- pyenv v2.2.5 GithubからCloneしてインストルしたもの (homebrewではない)
- zlibはhomebrewでインストール済み
brew install zlib
原因
最新のmacOSのzlibを使うとうまく行かない。
(それ以上はわからないすまん)
解決方法
pyenvのプラグインとして付属しているpython-buildを書き換えた。
(homebrewのpyenvの人はすまんわからん)
変更するファイル:
~/.pyenv/plugins/python-build/bin/python-build
変更箇所:
diff --git a/plugins/python-build/bin/python-build b/plugins/python-build/bin/python-build
index cd333a4a..883f459e 100755
--- a/plugins/python-build/bin/python-build
+++ b/plugins/python-build/bin/python-build
@@ -769,11 +769,7 @@ build_package_standard_build() {
use_homebrew || true
use_tcltk || true
use_homebrew_readline || use_freebsd_pkg || true
- if is_mac -ge 1014; then
- use_xcode_sdk_zlib || use_homebrew_zlib || true
- else
- use_homebrew_zlib || true
- fi
+ use_homebrew_zlib || true
fi
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
あとはいつも通りpyenv install 3.10.3
などとすればOKでした。
他の解決方法は、ビルドフラグ周りを丁寧に設定してexportしていくスタイル。
詳細はこちらへどうぞ:
https://qiita.com/kzrashi/items/80ff82d4330d51a398dc
今回出たエラー
pyenv install 3.10.1
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.1.tar.xz...
-> https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tar.xz
Installing Python-3.10.1...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
BUILD FAILED (OS X 12.3.1 using python-build 2.2.5)
Inspect or clean up the working tree at /var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/python-build.20220418172629.29863
Results logged to /var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/python-build.20220418172629.29863.log
Last 10 log lines:
File "/private/var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/python-build.20220418172629.29863/Python-3.10.1/Lib/ensurepip/__init__.py", line 277, in _main
return _bootstrap(
File "/private/var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/python-build.20220418172629.29863/Python-3.10.1/Lib/ensurepip/__init__.py", line 193, in _bootstrap
return _run_pip([*args, *_PACKAGE_NAMES], additional_paths)
File "/private/var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/python-build.20220418172629.29863/Python-3.10.1/Lib/ensurepip/__init__.py", line 93, in _run_pip
return subprocess.run([sys.executable, '-W', 'ignore::DeprecationWarning',
File "/private/var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/python-build.20220418172629.29863/Python-3.10.1/Lib/subprocess.py", line 524, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/private/var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/python-build.20220418172629.29863/Python-3.10.1/python.exe', '-W', 'ignore::DeprecationWarning', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/tmpkr98li74/setuptools-58.1.0-py3-none-any.whl\', \'/var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/tmpkr98li74/pip-21.2.4-py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/var/folders/8v/vmn5tm455_z7l9hcwzm4hnd80000gn/T/tmpkr98li74\', \'--root\', \'/\', \'--upgrade\', \'setuptools\', \'pip\']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' returned non-zero exit status 1.
make: *** [install] Error 1
検索すると結構同じところで困っている人がいて、結局の所はxcodeのzlibだとうまく行かないのでhomebrewのzlibを使うようにビルドパス周りを何とかするというのがだいたい共通した解決方法。
雑談
homebrewでもCellerのなかにあると思うからそれをいじればOKだと思うけどhomebrewに影響が出るかも?まあ大丈夫だとおもうけど。
find /usr/local/Cellar/ -name "python-build"
とかで出てくると思う。
自己責任で。
個人的にはナントカenvはhomebrewではなくgithubからcloneして使うほうが好き。
結構バージョンによって不具合があったり、goenvなんかだとプラグインのgo-buildは最新にしたいけ本体は古いものを使いたいとかもあったりする。
単純にGitでバージョンを変えれるし、今回のような問題だとprofileなどにビルドフラグの設定とかを追加しなくて済む。
ただホーム下のドットフォルダが増えるからまあ、一長一短なのかな。