趣味でブロックチェーン開発技術の勉強を始めました。
Udemyの 現役シリコンバレーエンジニアが教えるPythonで始めるスクラッチからのブロックチェーン開発入門 | Udemy をやるにあたり、Python v3.7.3
の環境構築をしようとしたけどできず、最終的に v3.7.13
の環境を構築したので備忘録。
環境
- OS: MacOS 12.2.1
- MacBook Pro(14インチ、2021)
- チップ: Apple M1 Pro
- シェル: fish
結論
MacOS Monterey 12.2.1 では、pyenv を使ったPython v3.7.3
のインストールはできず、同じマイナーバージョン v3.7.z であれば v3.7.13 にしなければならない。(他にも、v3.8.13
v3.9.11
v3.10.3
ならいける)
参考:M1 Mac (macOS Monterey 12.2.1)でpyenv/Python開発環境構築
手順
pyenv のインストール
まずは、pyenv
をインストール
brew install pyenv
インストールできていることを確認
pyenv -v -> pyenv 2.3.5
pyenv初期化
pyenvの初期化コマンドを ~/.config/fish/config.fish
に書く
vi ~/.config/fish/config.fish ↓この2行を追加する eval (pyenv init --path | source) eval (pyenv init - | source)
終わったら、~/.config/fish/config.fish
を再読み込み
source ~/.config/fish/config.fish
PATHを通す
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/shims:$PATH"
Pythonインストール
pyenv install 3.7.3
めっちゃエラー出た。。
python-build: use openssl@1.1 from homebrew python-build: use readline from homebrew Downloading Python-3.7.3.tar.xz... -> https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz Installing Python-3.7.3... 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.2.1 using python-build 20180424) Inspect or clean up the working tree at /var/folders/t7/fqp4smvn53538_j5fv12k1zr0000gn/T/python-build.20221101010221.63987 Results logged to /var/folders/t7/fqp4smvn53538_j5fv12k1zr0000gn/T/python-build.20221101010221.63987.log Last 10 log lines: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach-o/dyld.h:98:54: note: passing argument to parameter 'bufsize' here extern int _NSGetExecutablePath(char* buf, uint32_t* bufsize) __OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0); ^ ./Modules/posixmodule.c:8431:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration] ret = sendfile(in, out, offset, &sbytes, &sf, flags); ^ 1 error generated. make: *** [Modules/posixmodule.o] Error 1 make: *** Waiting for unfinished jobs.... 1 warning generated.
BUILD FAILED (OS X 12.2.1 using python-build 20180424)
のエラーメッセージでググると、zlib
をインストールしないといけないらしい。
brew install zlib
set -gx LDFLAGS "-L/usr/local/opt/zlib/lib" set -gx CPPFLAGS "-I/usr/local/opt/zlib/include" set -gx PKG_CONFIG_PATH "/usr/local/opt/zlib/lib/pkgconfig"
これで再度 pyenv install 3.7.3
しても同じエラー。
結論にも書いた通り、パッチバージョンを変えてインストールしてみる M1 Mac (macOS Monterey 12.2.1)でpyenv/Python開発環境構築
pyenv install 3.7.13
いけた・・・!
python -V -> Python 2.7.18
グローバルにバージョン設定するなら
pyenv global 3.7.13
特定ディレクトリでなら
pyenv local 3.7.13
バージョン変更されたこと確認して終わり
python -V -> Python 3.7.13
番外編
M1 Mac にpyenvで環境構築してみたらBUILD FAILEDと怒られた件 - Qiita によると、CommandLineTools
とXcode
の再インストールをするといけることもあるらしいです。ここまで紹介したやり方でうまくいかない場合は検討してみてください。