6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

macOS Montereyでpyenv installが失敗したときの記録

Last updated at Posted at 2022-04-18

環境

  • 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などにビルドフラグの設定とかを追加しなくて済む。
ただホーム下のドットフォルダが増えるからまあ、一長一短なのかな。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?