MacPorts版Pythonでvirtualenv
MacPorts版Pythonでvirtualenvを使おうとしてはまったので解決方法を記しておきます.問題は
$ virtualenv --no-site-packages env
が使えないということです.Upgrade 1.9.7 -> 2.0b1 without Virtualenv - TurboGears | Google グループによると,これはMacPorts版Pythonの問題で,9月に報告されているけど何の返信も無い.MacPorts版はいろいろいじってるから,トラブルを避けるために公式のPythonを使いなさいとのこと.
公式版Pythonをインストール
公式サイトからPython 2.5.4のMac版をダウンロードしてインストールしました.公式版Pythonはバイナリを/usr/local/bin/に,ライブラリを/Library/Frameworks/Python.framework/に,サードパーティのパッケージを/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/にインストールします.元々インストールされているApple版PythonやMacPorts版Pythonと重複することはありません.
公式版Pythonとsetuptoolsでいくなら,MacPorts版Pythonを無効にしてやればOKです.公式版Pythonを使いつつパッケージはMacPortsで管理したい人は以下のコマンドは実行せずに進んでください.
$ sudo port deactivate python25
公式版PythonでMacPortsのパッケージ使う
setuptoolsはインストール後の管理機能が不十分なので,パッケージはMacPortsからインストールするようにします.MacPortsのPythonは有効にしておく必要があります.公式版には少なくとも以下のパッケージは含まれているので,MacPortsから無効にしてください.他にもあるかもしれませんが….
- readline
- hashlib
- zlib
- sqlite3
まず,ハードリンクを削除してMacPorts版Pythonを優先的に使用しないようにします.
$ sudo rm /opt/local/bin/python
次にMacPorts版のsite-packagesにシンボリックリンクを張ります.
$ cd /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 $ sudo mv site-packages site-packages.orig $ sudo ln -s /opt/local/lib/python2.5/site-packages/ site-packages
最後にvirtualenvのコマンドを編集し,1行目のshebangを変更します.
$ sudo vim /opt/local/bin/virtualenv
#!/opt/local/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/Python
を次のようにします.
#!/usr/local/bin/python
IPython等のコマンドも同様に変更してください.これで使えるようになりました.
$ virtualenv --no-site-packages env
とすると,全てうまくいくはずです.