Mac(El Capitan)にTensorFlowを入れようとしてハマった残念な私
機械学習に入る前の備忘録and私の残念な思い出話。
発端
少しずつ機械学習の勉強を始めていた私ですが、今週末は出張になってしまいました。
自宅のデスクトップ環境だけでしか作業できないのは不便...
よっしゃ!この機会に調子悪いMacをクリーンしてEl Capitanもいれちゃうぞ!機械学習の環境も構築や!
と先週末から環境構築を始めました。
まさか、この後少し面倒なことになるとも知らずに...
残念な思い出
ここからは残念な思い出をつらつらと書いていきます。
まずはApp StoreからEl Capitanをインストール。
データのバックアップを済ませて、いざクリーンインストール開始!
家のネット回線が低速すぎてクリーンインストール完了まで1日ぐらいかかりました。
(ISPが悪いのでしょうか...)
クリーンインストールも終わったので、公式に従ってTensorFlowを入れます。
Download and Setup
あれ?なんかエラーが出てるぞ?
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl The directory '/Users/hayato/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/Users/hayato/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting tensorflow==0.8.0 from https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl Downloading https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl (19.3MB) 100% |████████████████████████████████| 19.3MB 41kB/s Requirement already up-to-date: six>=1.10.0 in /Library/Python/2.7/site-packages/six-1.10.0-py2.7.egg (from tensorflow==0.8.0) Collecting protobuf==3.0.0b2 (from tensorflow==0.8.0) Downloading protobuf-3.0.0b2-py2.py3-none-any.whl (326kB) 100% |████████████████████████████████| 327kB 221kB/s Collecting wheel (from tensorflow==0.8.0) Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB) 100% |████████████████████████████████| 71kB 856kB/s Collecting numpy>=1.10.1 (from tensorflow==0.8.0) Downloading numpy-1.11.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.9MB) 100% |████████████████████████████████| 3.9MB 194kB/s Collecting setuptools (from protobuf==3.0.0b2->tensorflow==0.8.0) Downloading setuptools-23.0.0-py2.py3-none-any.whl (435kB) 100% |████████████████████████████████| 440kB 896kB/s Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow Found existing installation: setuptools 1.1.6 Uninstalling setuptools-1.1.6: Exception: Traceback (most recent call last): File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/commands/install.py", line 317, in run prefix=options.prefix_path, File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/req/req_set.py", line 736, in install requirement.uninstall(auto_confirm=True) File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/req/req_install.py", line 742, in uninstall paths_to_remove.remove(auto_confirm) File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/req/req_uninstall.py", line 115, in remove renames(path, new_path) File "/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg/pip/utils/__init__.py", line 267, in renames shutil.move(old, new) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 299, in move copytree(src, real_dst, symlinks=True) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 208, in copytree raise Error, errors Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', "[Errno 1] Operation not permitted: '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', "[Errno 1] Operation not permitted: '/tmp/pip-HW7wDr-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib'")]
アンインストールに失敗している...?何が起こっているんだ...。
クリーンインストールする前はできていたはずだが...。
この後しばらく原因がわからず右往左往していました。
もしかして実行環境が変わってしまった?
$ python -V Python 2.7.10
!!!!!!
そういえば前はbrewで最新版入れてたことに気づく
下記を参考にbrewを導入
qiita.com
$ echo 'export PATH=/usr/local/bin:$PATH' >> .bash_profile $ source .bash_profile $ brew update $ brew install python $ pip install --upgrade pip setuptools $ brew linkapps python
その後、再度公式に沿ってTensorFlowをいれてみると、あっけなく導入できてしまいました。
原因
調べてみたところ、Yosemiteまでだと問題なく公式の言うとおりにしていけば導入できるとのこと。
原因はEl Capitanから導入されたシステム整合性保護(System Integrity Protection (SIP)やrootlessなど)
と呼ばれる新しいセキュリティ技術のためだそうです。
まとめられている方がいました rcmdnk.github.io
お恥ずかしながら、私はアップデート内容について何一つ理解していないまま、
El Capitanにアップデートしてしまい、今回のような事態となってしまいました。
アップデートの際は、アップデート内容についてしっかり確認しようと思うきっかけとなりました。
brewにも問題が出たりするそうですので、皆様もお気をつけください。