こんにちは、エンジニアのオオバです。
最近よく話題にあがる機械学習について多少は知識として入れとかんといかんかなと思い、重い腰をあげて以下の書籍を文教堂で購入しました。
サンプルコードがPython3系でぼくのMacには2系しかインストールされていなかったため、この際pyenvを導入してバージョン管理してから始めようかなって思った矢先の落とし穴の共有です。
pyenv
自体はHomebrewでインストールし、ここまでは問題なく進みました。
brew install pyenv
以下のコマンドでPython3.6.3をインストールします。
pyenv install 3.6.3
すると以下のようなエラーが発生しました。
Downloading Python-3.6.3.tar.xz...
-> https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
Installing Python-3.6.3...
BUILD FAILED (OS X 10.12.6 using python-build 20160602)
Inspect or clean up the working tree at /var/folders/p4/bhbpf2g113lg36gxmv90rrv4rjf1fs/T/python-build.20171021174552.41094
Results logged to /var/folders/p4/bhbpf2g113lg36gxmv90rrv4rjf1fs/T/python-build.20171021174552.41094.log
Last 10 log lines:
copying build/lib.macosx-10.12-x86_64-3.6/__pycache__/_sysconfigdata_m_darwin_darwin.cpython-36.opt-1.pyc -> /Users/a12176/.pyenv/versions/3.6.3/lib/python3.6/lib-dynload/__pycache__
dyld: lazy symbol binding failed: Symbol not found: _utimensat
Referenced from: /private/var/folders/p4/bhbpf2g113lg36gxmv90rrv4rjf1fs/T/python-build.20171021174552.41094/Python-3.6.3/./python.exe
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: _utimensat
Referenced from: /private/var/folders/p4/bhbpf2g113lg36gxmv90rrv4rjf1fs/T/python-build.20171021174552.41094/Python-3.6.3/./python.exe
Expected in: /usr/lib/libSystem.B.dylib
make: *** [sharedinstall] Abort trap: 6
同じような問題を解決した記事を参考に以下のコマンドを実行してみます。
MacでPython 3.5.0インストールに失敗したら - Qiita
xcode-select --install
再度Python 3.6.3のインストールすると成功しました。
pyenv install 3.6.3
→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら
pyenvの初期設定
このままではpyenv経由のPythonを使用できません。
which python
と実行すると、デフォルトでMacインストールされているPython /usr/bin/python
が指定されていることが分かります。
pyenv経由で使用するPythonのバージョンを設定します。
pyenv global 3.6.3
以下のコマンドを実行した後、which python
してみます。
eval "$(pyenv init -)"
すると、/Users/ユーザーネーム/.pyenv/shims/python
このようにpyenv経由のpythonが指定されていることがわかります。
ちなみに、このpyenv init
ですが、このまま実行してしまうと以下のようにしてほしいという依頼が表示されます。
## Load pyenv automatically by appending
<GoogleAdsense type='1' />
## the following to ~/.bash_profile:
eval "$(pyenv init -)"
上記の指示に従い.bash_profile
または.bashrc
に以下の記述をすることで起動時に自動的にpyenv経由のPythonを使用することが可能になります。
eval "$(pyenv init -)"
まとめ
xcode-select --install
このコマンドは、コマンドラインツールの自動インストールダイアログをリクエストするので、開発ツールインストールにおけるコマンドライン系のエラーがでた場合には一度試してみるのが良いかもしれません。
xcode-selectによるデベロッパディレクトリ管理 - Qiita
最後に
これでやっと冒頭の機械学習の本が始められそうです。
この記事が気に入ったらフォローしよう
- OS X 10.12.6
- pyenv 1.1.5