MacPortsからHomeBrewに乗換え&Python開発環境構築
追記 (homebrewでpythonいれるのと、virtualenvwrapperやめました)
ライブラリとか作ってるとtoxで複数のバージョンのPythonを動かしたりする必要があります。 HomebrewはPython2.7とPython3.5だけとかならいいのですが、3.3 ~ 3.5までインストールしたいとかは基本的に出来ません。
今はhomebrewのpythonをして、pymという管理ツールを使っています。
virtualenvwrapperもわざわざ入れるほどでもないので↓を.bashrcに書いています。workon
はこれで出来ます。
## workon function like virtualenv wrapper WORKON_HOME=${WORKON_HOME:-$HOME/.virtualenvs} workon() { if [ $# -ne 1 ]; then for env in $(ls -d ${WORKON_HOME}/*/); do basename ${env} done elif [ -d ${WORKON_HOME}/${1} ]; then source ${WORKON_HOME}/${1}/bin/activate fi }
きっかけ
前から色んなコトしてるとMacPortsよりもHomeBrewを見かけた(気のせいかもだけど)。実際、僕の周りでもHomeBrewユーザが圧倒的に多い。root権限要らないし、依存関係でインストールされるソフトウェアが少ないらしい。
Macユーザーとして恥ずかしくない最新テクニック―新OS Yosemite対応版 (英和MOOK らくらく講座 207)
- 出版社/メーカー: 英和出版社
- 発売日: 2014/10/23
- メディア: ムック
- この商品を含むブログを見る
MacPorts --> HomeBrew
MacPortsのアンインストールはこちらを参考にすれば問題なくいけました。一応パッケージ一覧をメモ$ port installed > macports.txt
とかしておくと良さそうです。HomeBrewは公式サイトに書いてあるコマンドをコピペ。
$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
その後も色々やるのですが↓にまとまってました。
$ echo export PATH='/usr/local/bin:$PATH' $ brew doctor ここでWarningsのオンパレードをくらうけどめげずに対処。 $ brew update
brew doctor時のWarningに対処する。
[警告1]Some directories in /usr/local/share/man aren't writable.
Warning: Some directories in /usr/local/share/man aren't writable. This can happen if you "sudo make install" software that isn't managed by Homebrew. If a brew tries to add locale information to one of these directories, then the install will fail during the link step. You should probably `chown` them: /usr/local/share/man/de /usr/local/share/man/de/man1
どうやら権限がないとだめみたいです。↓のようにしとけば治りました。
$ ls -la /usr/local/share/man/ total 32 drwxrwxr-x 8 root admin 272 3 18 12:44 . drwxrwxr-x 5 root admin 170 10 24 08:29 .. drwxr-xr-x 3 root wheel 102 10 24 08:29 de drwxrwxr-x 184 root admin 6256 3 20 14:09 man1 drwxrwxr-x 10 root admin 340 10 24 08:29 man3 drwxrwxr-x 9 root admin 306 1 20 19:59 man5 drwxrwxr-x 13 root admin 442 10 24 08:29 man7 -rw-r--r-- 1 root admin 14705 3 18 12:44 whatis $ sudo chown masashi /usr/local/share/man/de/ $ sudo chown masashi /usr/local/share/man/de/man1
[警告2]Python is installed
Warning: Python is installed at /Library/Frameworks/Python.framework Homebrew only supports building against the System-provided Python or a brewed Python. In particular, Pythons installed to /Library can interfere with other software installs.
こちらに同じような症状の方がいました。
↑のサイトによるとどうやらこれは、MacのインストーラでPythonを導入した時に作られたようです。 みなさん削除しているようなので、僕も上の記事を参考に削除。
シンボリックリンクは↓のように確認できます。
$ ls -l /usr/local/bin | grep Python | awk '{print $9}' 2to3 2to3-2 2to3-2.7 idle idle2 idle2.7 pydoc pydoc2 pydoc2.7 python python-32 python-config python2 python2-32 python2-config python2.7 python2.7-32 python2.7-config pythonw pythonw-32 pythonw2 pythonw2-32 pythonw2.7 pythonw2.7-32 smtpd.py smtpd2.7.py smtpd2.py
上のブログの人はrmで消していましたが、HomeBrewはbrew prune
コマンドでデッドシンボリックリンクを全部消してくれるみたいです。
$ brew prune $ brew doctor Your system is ready to brew.
なんか感動!コンピュータもだいぶスッキリした気がします。
Pythonも綺麗に削除できたようです。.bash_profileにパスが残ってるのでそれも削除しときましょう。↓の行を削除
# Setting PATH for Python 2.7 # The orginal version is saved in .bash_profile.pysave PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH
sbinディレクトリの作成と$PATHの設定
こちらやこちらを参考にsbinディレクトリを作成していきます。
Homebrewが使用する/usr/local/binはデフォルトでパスが通っているので、通常は設定を変更する必要はありません。 しかし、Macバンドルのソフト(最初から入ってるやつ)をHomebrewで入れ直す場合は、/usr/local/binが優先されるようにします。そうしないと入れたソフトを使う事ができません。
このディレクトリはデフォルトでは存在せず、Homebrewをインストールしても作成されないとのことなので、作成。
$ sudo mkdir /usr/local/sbin $ sudo chmod g+rwx /usr/local/sbin
次にHomebrewでインストールしたコマンドが適切に実行されるようにコマンド検索パスを変更。
Mac OS Xのコマンド検索パスは/etc/pathsに記述されていて、このファイルの内容が$PATHに設定されるようになっている。既存の「/usr/local/bin」を先頭行に移動し、「/usr/local/sbin」の行を追加すればよい。
$ cat /etc/paths /usr/bin /bin /usr/sbin /sbin /usr/local/bin
↓のように書き換え。(↑は書き換え前)
$ cat /etc/paths /usr/local/bin /usr/bin /bin /usr/local/sbin /usr/sbin /sbin
便利なパッケージをインストール
MacPortsの時も使っていたパッケージをインストール
- rmtrash : 指定ファイルをゴミ箱に捨てる。rmに置き換えると良い。
- imagemagick : 画像変換ツール。色々できる。
- pdftk : PDF変換ツール。ちょっとバージョン古いけどまぁOK。
- tree : ディレクトリ構成をツリー表示で見やすく表示してくれる。
- wget : 説明不要?
- Ricty : プログラマ御用達フォントらしい
rmは怖いので、rmtrashに置き換えています。.bashrcに↓を追記。
alias rm='rmtrash'
ここで念のためbrew doctor
をしてみるとerrorが出た。
$ brew doctor Warning: You have unlinked kegs in your Cellar Leaving kegs unlinked can lead to build-trouble and cause brews that depend on those kegs to fail to run properly once built. Run `brew link` on these: imagemagick $ brew link --overwrite imagemagick Linking /usr/local/Cellar/imagemagick/6.8.7-7... 71 symlinks created $ brew doctor Your system is ready to brew.
Python開発環境を整備
virtualenvで管理するのが流行りらしいので、便乗します。 virtualenvの説明に関してはこちらやこちらが分かりやすかったです。
グローバルにPythonをインストールすると,複数のバージョンが共存できなくなる.独立したPythonを現在のディレクトリのみで使うようにするのがvirtualenv。virtualenvwrapperはそれをさらに簡単に扱えるとても便利なライブラリ。
pipのインストール
pipは、easy_install を置き換えるものとして開発されていて、パッケージのuninstallもできて便利らしい。
$ sudo easy_install pip
pipを使ったインストールはこちらによると
ライブラリのインストールは
$ pip install (ライブラリ名)
で。$ sudo pip install (ライブラリ名)
だとせっかく固有に環境切ったのにグローバルに入っちゃうので, 注意してください。
Python, のインストール
HomeBrewでPython2.7.6をインストール
$ brew install python
途中でエラーが出ました。こちらによるとeasy_installで入れたpipが原因のようです。スゴイ参考になりました。
$ which python /usr/bin/python <- これはMacに標準で入ってるPythonだからbrewで入れたやつじゃない! $ sudo chown $USER /usr/local/bin/pip* $ brew link --overwrite python Linking /usr/local/Cellar/python/2.7.6... 35 symlinks created $ which python /usr/local/bin/python <- これがbrewで入れたやつ!
virtualenvとvirualenvwrapperをPython 2.7.4環境へインストール
こちらにはVirtualenvwrapperは各環境を管理するツールなので, wrapperそのものはグローバルにインストールする。と書かれてあるのですが、ほかのサイトを見ると皆さん普通にsudo使わずにインストールしてます。こちらによると、
virtualenv を使うと、たくさんの独立した Python 環境を作成できます。システム環境に依存する全ての Python 環境から同じパッケージを共有できるように、システムにインストールされている Python (virtualenv がアクティブではない) に virtualenv と virtualenvwrapper の2つだけはインストールする必要があります。
結局どうすればいいのか分からないけど、とりあえずsudo使わずにインストールしてみます。分かる方いましたら、コメント等で教えてください...
$ pip install virtualenv virtualenvwrapper
このままではまだ使える状態になっていないらしく、こちらを参考にしてvirtualenvwrapperにパスを通すため、.bash_profileに以下を追記。
# Virtualenvwrapper if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh fi
/usr/local/bin/virtualenvwrapper.sh があれば(=virtualenvwrapperがインストールされていれば), WORKON_HOMEを設定してvirtualenvwrapper.shを実行。virtualenvwrapper.shのPATHは環境にもよるので
$ which virtualenvwrapper.sh
で確認しておく。
僕の環境では一緒でした。
$ which virtualenvwrapper.sh /usr/local/bin/virtualenvwrapper.sh
Python3のインストール
$ brew install python3
終了!
おわりに
実際にvirtualenvwrapperを使って開発環境を構築する方法は別の記事にします。ほとんど知識のない状態からだったので結構大変でした。アドバイスとかあればお願いします。
ついでにbrewの設定情報も載せておきます。
$ brew --env HOMEBREW_CC: clang HOMEBREW_CXX: clang++ MAKEFLAGS: -j4 CMAKE_PREFIX_PATH: /usr/local CMAKE_INCLUDE_PATH: /usr/include/libxml2:/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers CMAKE_LIBRARY_PATH: /System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries PKG_CONFIG_LIBDIR: /usr/lib/pkgconfig:/usr/local/Library/ENV/pkgconfig/10.9 ACLOCAL_PATH: /usr/local/share/aclocal PATH: /usr/local/Library/ENV/4.3:/usr/bin:/bin:/usr/sbin:/sbin $ brew --config HOMEBREW_VERSION: 0.9.5 ORIGIN: https://github.com/Homebrew/homebrew HEAD: 6b7c9f7b9634756fa74c0d9a3430dbfaa39c900d HOMEBREW_PREFIX: /usr/local HOMEBREW_CELLAR: /usr/local/Cellar CPU: quad-core 64-bit ivybridge OS X: 10.9.2-x86_64 Xcode: 5.1 CLT: 5.1.0.0.1.1393561416 Clang: 5.1 build 503 X11: 2.7.5 => /opt/X11 System Ruby: 1.8.7-358 Perl: /usr/bin/perl Python: /usr/local/bin/python => /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/bin/python2.7 Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
参考リンク集
本当に勉強になりました。感謝です。