anaconda病
はじめに
人文学系から人文情報学にダイブしていたので、情報学関係を学習するのが大変な1年だった。その中で、環境構築をしようとしたり、学習本のサンプルや問題演習の解答を探るためにググりまくって多くの人にお世話になったので、たまには恩返しがてらにanacondaを入れたpython環境構築でドツボだったエラーメッセージとその解決についてブログに書くことにする。
ちなみに、エラー修正があらかた終わってから書こうと思ったので細かいログは取っていないので悪しからず。
環境
OSX10.12.2 pyenv1.0.3 Homebrew
*実行前に、昔入れてしまったpython3のframeworkディレクトリを削除し、brew doctorを叩いて念のため問題点を潰しておいた。
エラー内容
ERROR: Cannot install into directories with spaces
>~$ pyenv install Anaconda 4.1.1
BUILED FAILEDで祝福される。ログの最後の数行が示されるが、どうやら“ERROR: Cannot install into directories with spaces”が一番の理由らしい。
configure: error: C compiler cannot create executables
>~$ pyenv install 3.5.2
とりあえず、pyenvでpythonバージョンパッケージをインストールして様子を見てみるのもありだと思った。“C compiler cannot create executables”などとエラーがでて、CLT落としてあるけど、それとは別にbrewでgccパッケージを落とそうと考えたが、1時間ほどかかるという記事を読んでやめた。
解決方針
- エラー1:少なくとも、エラーメッセージ自体は明快で、githubのissueあたりに何かありそうなので、そのあたりを調べてみる。
- エラー2:こっちは、OSXだと色々な問題が考えられるので、時間がかかる。よってまずエラー1から先にあたって、エラー2はそのあとに取り組むことにした。
エラー1の解決
このページを読むと、パスの中にスペースが入ってるとエラーが出る仕様になっているらしいことがわかる。ダウンロードされたshファイルをlessしてエラーメッセージでサーチすると、確かにパスの中にスペースが入っているとエラーが出てインストールをやめるという制御文があった。
しかし、var/以下のパスのどこにもスペースの入っているディレクトリ名はなかった。ふと思い立って、 /Users以下から見ていくと、実はそもそもホームディレクトリの名称にスペースがあった。
普通、ホームディレクトリの名称を選ぶ際にスペースを入れるのはご法度だが、家族のお古のマックを長らく使っていた僕は、高校生の時に、Time Machineで初めてデータ移植をやり、そこでユーザ名とホームディレクトリ名の設定をよく調べもせず決めてしまい、今まで放置してきた(参考までに述べておくと、“hoge”のコピーだから“hoge/S1”としてしまったのだ)。
Time Machineでバックアップを取ってから、OSXのホームディレクトリ名の変更手順に従って変更をした。
ホームディレクトリ名を変更すると、いくつか問題が生じたので次のように解決した。
- Dockのアイコンがいくつか「?」表示されたので、Dockから除去した。
- Google Driveで通信エラーが生じたので、ガイドに従って再度リンクし直した。
- Dropboxが開かないので、「Dropbox ホームディレクトリ」ググると解決法が載っていた。いわゆる特定のディレクトリやファイルを削除して初期状態からアプリを起動する方法。これで解決した。
- iCloudがログアウトしてしまっているので、再度ログインする。
以上の後、ターミナルでコマンドを叩く。
>~$ pyenv install anaconda4-4.1.1
俺たちのビルド。エラー1は解決。
エラー2の解決
エラー2を解決するにあたって次のように推論した。
pyenvを入れた時、そもそもpythonの他のバージョンをインストールできず、原因がわからなかったので放っておいた。今まで、億劫がってホームディレクトリにスペースがある暴挙に目をつぶってきたが、ここで改めて普通にインストールして見たら普通にビルドできるのでは?
>~$ pyenv install 3.5.2
普通にビルドできた。やったね。
>~$ pyenv global install 3.5.2
>~$ pyenv global install anaconda3-4.1.1
エラーでない。
というわけで、全てのエラーは解消された。
人文学から人文情報学にシフトして苦労している人の一助に少しでもなればと思う。