Mavericksでは/usr/bin/python
が2.7.5のバージョンがインストールされていて、
現時点ではpython3は特に必要ないので、
Homebrewのは消してMacに入ってる物を使う様に。
Homebrew環境のリセット
取り敢えずHomebrewも色々ごちゃごちゃしてしまってるので一旦リセット1。
brewallを使って現状のリストを確認。
$ cd
$ brewall -i
$ cp /usr/local/Library/Brewfile .
$ brewall -e
として、リストをホームに一度退避てから、最後の所で ファイルを開いて中身を全部消す。
$ brewall -c -r
$ rm -rf /Library/Caches/Homebrew
で全部削除。
改めてBrewfileを吟味してbrewall -e
で編集して現状以下の様に。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
出来たら
$ brew update
$ brewall
で全部インストール。
これでHomebrewのpythonは消えて/usr/bin/python
がデフォルトに。
/Library/Python/
等もMacデフォルトを使うようになる。
pipをインストール
pipは入ってないのでeasy_installで導入 2。
$ sudo easy_install pip
Homebrewで入れなおす時の注意
これでMacのデフォルトpythonを使うようになったわけですが、1つ注意しておかなくては いけないのが 次にHomebrewでpythonを入れようとするとき。
現状、python2.7.5がHomebrewの2系の最新なので必要ないですが、
もし、次にHomebrewでpythonを入れることがあると、上でeasy_install
したpipが問題になります。
/Library/Python/2.7/site-packages/
に書き込むために
sudoで入れてるのですが、
pip
本体は/usr/local/bin
に入ります。
これが、Homebrewで入れる時にconflictするので、
brew install python
の途中で
...
They will install into the site-package directory
/usr/local/lib/python2.7/site-packages
See: https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python
Warning: Could not link python. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link python'
Possible conflicting files are:
/usr/local/bin/pip-2.7
/usr/local/bin/pip
みたいなWarningが出ます。/usr/local/bin/pip*
はrootの物になっているので
Userでは書き換えられないため。
pip
が問題なんですが、
pip
の後にpython
のリンクを作るようになってるみたいで、
python自体も/usr/local/bin/
にリンクされません。
これを回避するために、簡単には
$ sudo chown $USER /usr/local/bin/pip*
をしておけば良いと思います。
追記: 2013/11/20
これをしておいても、上の方法だと実体をインストールしてあって、 Homebrewでリンクを張るときに実体があるとエラーになります。
brew install python
した後に(この時はリンクが貼れない、とエラーが出る)、
$ brew link --overwrite python
とすると、必要なファイルを消してリンクを作りなおしてくれます。 ただ、この時も、rootのものになってると消せないので 先にrootで消しておくか、上の様にユーザー権限に変えておく必要が有ります。
追記ここまで
pythonをdownload/compileするのは結構時間がかかるので、 全部終わった後にリンクをつくろうとして上みたいにエラーするとがっかりするので、 とりあえずでもしておくべきです。。。
gcalcli周りのセットアップ
GeekToolでgcalcliというpythonスクリプトを使ってGoogleカレンダーの内容を表示 させたりしてるのですが、これに必要なライブラリー等のセットアップ。
最近setup.py
が加えられたので簡単にインストールが可能。
$ git clone [email protected]:insanum/gcalcli.git
$ cd gcalcli
$ sudo pip install .
pip install
後の.
を忘れないように。
これで、gcalcli
自体も/usr/local/bin/
以下にインストールされ、
gflags等のmoduleも/Library/Python/2.7
以下にインストールされます。
ちなみに、gcalcli
でgoogleへのリクエスト回数が1日の上限を越してしまって
エラーが出る3
ということが問題になっているみたいです。
たまに見えなくなってておかしいな、とは思ってたんですが、
実際さっき見えなくなってたので(GeekTool上ではエラーが出たら何も出力しないようにしてるので)、ターミナルから試してみたら確かに
File "/Library/Python/2.7/site-packages/apiclient/http.py", line 723, in execute
raise HttpError(resp, content, uri=self.uri)
apiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/calendar/v3/calendars/[email protected]/events?timeMax=2014-01-05T00%3A00%3A00%2B01%3A00&alt=json&singleEvents=true&timeMin=2013-11-05T00%3A00%3A00%2B01%3A00 returned "Daily Limit Exceeded">
こんな感じのエラー。 回避するには、自分でGoogle Apiのclient IDとclient secretを Google Cloud Console から作成して取ってきます。
$ rm -f ~/.gcalcli_cache ~/.gcalcli_oauth
$ gcalcli --client_id xxxx.apps.googleusercontent.com --client_secret xxxx agenda
こんな感じで一度設定やキャッシュを消して自分のclient ID/secretを入れて 認証しなおしてあげます。 これで、googleへのリクエストが自分専用になるので、 普通に使う限り上限4は超えません。
さらにちなみに、このgoogle apiを使うときに認証に使うsecretについて、
gcalcli
なんかだとデフォルトの物がスクリプトに平文で書いてあるんですが、
secretなのに公開して良いのかどうか。
単にsecretは公開しちゃ駄目、みたいに書いてある所があったり、 gcalcliみたいに普通に見えるものもあったり。 上で挙げてるgcalcliで上限超えちゃったというissueでは googleの中の人と名乗る人がこのscript見た上で 上限を変更したりしている(?)ので、この書き方自体に大きな問題が あるわけでも無いような。
深く言及してるところとしては
この辺り。要するに、googleの場合はちゃんと何が公開されて 何にアクセスされて、何がいじられる可能性があるか、きちんと 理解してれば公開しても問題ないよ、ということのよう。
一方Facebookでも同じような定義があるが、こちらのsecretは 漏れると危険なので公開しちゃ駄目、とのこと。
もうひとつついでに、GeekTool なんですが、一度version 3.0の時にApp Storeからの配布に変更されてたんですが、 また、直接配布型に変わってました。
どうもAppleがアプリの制限を強化したらそれにひっかかってやっぱり直接配るわ、 となったみたいです。
現状のGeekToolと交換する祭は、
公式から最新版を取ってきて、
GeekToolを起動作しているなら開いてEnable
からチェックを外し、
一応アクティビティモニタでGeekTool Helper
が動いてないのを確認して
/Applications/
のGeekTool.appを最新版で上書き。
GeekToolを開いてEnable
にチェックすれば前の設定のママ動くはずです。
python 2.7.6
と、python 2.7.5で満足しようとしてたんですが、 ふとpython公式ページを見てみたら
Users of Mac OS X 10.9 should download Python 2.7.6 as it fixes a bug that causes the interactive prompt to crash.
とのこと。 特にMavericksでのreadline周りの変更が問題?のようで、 インタラクティブにやるときにクラッシュすることがあるとかないとか。
Stack Overflow にも色々問題が出た、という報告が上がってますが、 出てる通りにやってみてもクラッシュしたりしなかったり、いまいち良くわかりません。
が、いずれにしろ、問題があるのは確かな様。
Python 2.7.6 は10月26日に出されたばかりで、まだrelease candidate 1なので、 このRC1を入れても更に問題が起こった、との報告も出てるみたいです。
差し当たり、 Homebrewはまだ2.7.5のままで、 入れるには上記公式から直接取ってきて 入れる必要がありますが、 特に困ったことも手元ではないので見送る予定。
追記: 2013/11/20
11/10付けで正式版がリリースされたようです。 Homebrewのバージョンも2.7.6になっています。 現状、特に不満は無いわけですが、一応Homebrewで新しいのをインストールしておきました。
上にも書いたようにpip
のリンクが出来なくて弾かれるので
一度install
を行った後に強制的にlinkを張るように
$ brew intall python
$ brew link --overwrite python
追記ここまで
-
MavericksでHomebrewが問題ある、との話もチラホラありますが、 大概の場合、Xcodeのコマンドラインツールがちゃんとインストールされてないだけで、 Ruby環境をrvmからデフォルトに戻す でも書いたように
xcode-select --install
として(Xcodeの最新版を入れてかつ)コマンドラインツールを入れてやれば治るはず。 Mavericksにしたらまずこのコマンドは必須です。 ↩
HomebrewでPythonを入れると同時にpipも入れる様になっています。 ↩
カレンダーだと100,000 requests/day or 5.0 request/secon/user ↩