Mac OS X に gevent をインストールする(MacPorts 編)
昨日の続き。
MacPorts でインストールできないのが気持ち悪かったので色々試してみた。
$ sudo port install py26-gevent ---> Computing dependencies for py26-gevent ---> Dependencies to be installed: py26-greenlet py26-distribute ---> Activating py26-distribute @0.6.13_0 Error: Target org.macports.activate returned: Image error: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info already exists and does not belong to a registered port. Unable to activate port py26-distribute. Use 'port -f activate py26-distribute' to force the activation. Log for py26-distribute is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_python_py26-distribute/main.log Error: The following dependencies failed to build: py26-greenlet py26-distribute Error: Status 1 encountered during processing. To report a bug, see <http://guide.macports.org/#project.tickets>
py26-distribute が依存しているよう。
まず py26-distribute をインストールしてみる。
sudo port install py26-distribute ---> Computing dependencies for py26-distribute ---> Activating py26-distribute @0.6.13_0 Error: Target org.macports.activate returned: Image error: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info already exists and does not belong to a registered port. Unable to activate port py26-distribute. Use 'port -f activate py26-distribute' to force the activation. Log for py26-distribute is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_python_py26-distribute/main.log Error: Status 1 encountered during processing. To report a bug, see <http://guide.macports.org/#project.tickets>
失敗した。py26 でインストールしてあるものをリストアップする。
$ sudo port list installed | grep py26 py26-distribute @0.6.13 python/py26-distribute py26-pil @1.1.7 python/py26-pil py26-setuptools @0.6c11 python/py26-setuptools
py26-setuptools が入っていたので、それを一回アンインストールしてみる。
$ sudo port uninstall py26-setuptools ---> Deactivating py26-setuptools @0.6c11_1 ---> Cleaning py26-setuptools ---> Uninstalling py26-setuptools @0.6c11_1 ---> Cleaning py26-setuptools $ sudo port uninstall py26-distribute ---> Uninstalling py26-distribute @0.6.13_0 ---> Cleaning py26-distribute
再度 py26-distribute をインストールしてみる。
$ sudo port install py26-distribute ---> Computing dependencies for py26-distribute ---> Installing py26-distribute @0.6.13_0 ---> Activating py26-distribute @0.6.13_0 ---> Cleaning py26-distribute
py26-gevent をインストールする
sudo port install py26-greenlet ---> Computing dependencies for py26-greenlet ---> Activating py26-greenlet @0.3.1_0 Error: Target org.macports.activate returned: Image error: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/greenlet/greenlet.h already exists and does not belong to a registered port. Unable to activate port py26-greenlet. Use 'port -f activate py26-greenlet' to force the activation. Log for py26-greenlet is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_python_py26-greenlet/main.log Error: Status 1 encountered during processing. To report a bug, see <http://guide.macports.org/#project.tickets>
エラーメッセージが変わった!
py26-greenlet が入んなかった。pip からインストールした py26-greenlet を削除する。
$ sudo pip uninstall greenlet Uninstalling greenlet: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/greenlet/greenlet.h /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/greenlet-0.3.1-py2.6.egg-info /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/greenlet.so Proceed (y/n)? y Successfully uninstalled greenlet
MacPorts から greenlet をインストールする。
sudo port install py26-greenlet ---> Computing dependencies for py26-greenlet ---> Activating py26-greenlet @0.3.1_0 ---> Cleaning py26-greenlet
gevent を入れる。
sudo port install py26-gevent ---> Computing dependencies for py26-gevent ---> Fetching py26-gevent ---> Attempting to fetch gevent-0.12.2.tar.gz from http://distfiles.macports.org/python ---> Verifying checksum(s) for py26-gevent ---> Extracting py26-gevent ---> Configuring py26-gevent ---> Building py26-gevent ---> Staging py26-gevent into destroot ---> Installing py26-gevent @0.12.2_0 ---> Activating py26-gevent @0.12.2_0 ---> Cleaning py26-gevent
入った!
まとめ
C 言語の拡張があるようなのを pip でインストールしようとして失敗したら、MacPorts で統一してインストールすれば入る可能性が高い。