Cygwinにipythonを入れてみた

TAB補完などが可能ということで、対話実行型のシェルであるipythonを入れてみた。

pyreadlineが必要とのことで、easy_installでインストール

$easy_install install pyreadline
Searching for pyreadline
Reading http://pypi.python.org/simple/pyreadline/
Best match: pyreadline 2.0
Downloading http://pypi.python.org/packages/source/p/pyreadline/pyreadline-2.0.zip#md5=87b15f18deff1db76e9d37149a2b027b
Processing pyreadline-2.0.zip
Writing /tmp/easy_install-9jjs95/pyreadline-2.0/setup.cfg
Running pyreadline-2.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-9jjs95/pyreadline-2.0/egg-dist-tmp-TtFRf7
package init file 'pyreadline/configuration/__init__.py' not found (or not a regular file)
Creating missing __init__.py for pyreadline.configuration
zip_safe flag not set; analyzing archive contents...
Adding pyreadline 2.0 to easy-install.pth file

Installed /usr/lib/python2.7/site-packages/pyreadline-2.0-py2.7.egg
Processing dependencies for pyreadline
Finished processing dependencies for pyreadline

続けてipythonをインストール

$easy_install install ipython

Searching for ipython
Reading http://pypi.python.org/simple/ipython/
Best match: ipython 0.13.2
Downloading http://pypi.python.org/packages/source/i/ipython/ipython-0.13.2.zip#md5=76195c97e426fbc641f66c55faa0318a
Processing ipython-0.13.2.zip
Writing /tmp/easy_install-T0LnsL/ipython-0.13.2/setup.cfg
Running ipython-0.13.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-T0LnsL/ipython-0.13.2/egg-dist-tmp-2vXAPV
Adding ipython 0.13.2 to easy-install.pth file
Installing ipcontroller script to /usr/bin
Installing iptest script to /usr/bin
Installing ipcluster script to /usr/bin
Installing ipython script to /usr/bin
Installing pycolor script to /usr/bin
Installing iplogger script to /usr/bin
Installing irunner script to /usr/bin
Installing ipengine script to /usr/bin

Installed /usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg
Processing dependencies for ipython
Finished processing dependencies for ipython

ipythonを実行すると、何かエラーが...

$ipython
Traceback (most recent call last):
  File "/usr/bin/ipython", line 9, in <module>
    load_entry_point('ipython==0.13.2', 'console_scripts', 'ipython')()
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/frontend/terminal/ipapp.py", line 388, in launch_new_instance
    app.initialize()
  File "<string>", line 2, in initialize
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/config/application.py", line 84, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/frontend/terminal/ipapp.py", line 324, in initialize
    self.init_shell()
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/frontend/terminal/ipapp.py", line 340, in init_shell
    ipython_dir=self.ipython_dir)
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/config/configurable.py", line 318, in instance
    inst = cls(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/frontend/terminal/interactiveshell.py", line 360, in __init__
    user_module=user_module, custom_exceptions=custom_exceptions
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/core/interactiveshell.py", line 454, in __init__
    self.init_readline()
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/core/interactiveshell.py", line 1779, in init_readline
    import IPython.utils.rlineimpl as readline
  File "/usr/lib/python2.7/site-packages/ipython-0.13.2-py2.7.egg/IPython/utils/rlineimpl.py", line 38, in <module>
    from pyreadline import *
  File "/usr/lib/python2.7/site-packages/pyreadline-2.0-py2.7.egg/pyreadline/__init__.py", line 11, in <module>
    from . import unicode_helper, logger, clipboard, lineeditor, modes, console
  File "/usr/lib/python2.7/site-packages/pyreadline-2.0-py2.7.egg/pyreadline/modes/__init__.py", line 3, in <module>
    from . import emacs, notemacs, vi
  File "/usr/lib/python2.7/site-packages/pyreadline-2.0-py2.7.egg/pyreadline/modes/emacs.py", line 11, in <module>
    import pyreadline.logger as logger
AttributeError: 'module' object has no attribute 'logger'

If you suspect this is an IPython bug, please report it at:
    https://github.com/ipython/ipython/issues
or send an email to the mailing list at ipython-dev@scipy.org

You can print a more detailed traceback right now with "%tb", or use "%debug"
to interactively debug it.

Extra-detailed tracebacks for bug-reporting purposes can be enabled via:
    c.Application.verbose_crash=True

パッケージの依存関係がおかしくなったのか、とりあえずpyreadlineをいったん削除

$easy_install -mxN pyreadline
Searching for pyreadline
Best match: pyreadline 2.0
Processing pyreadline-2.0-py2.7.egg
Removing pyreadline 2.0 from easy-install.pth file

Using /usr/lib/python2.7/site-packages/pyreadline-2.0-py2.7.egg

Because this distribution was installed --multi-version, before you can
import modules from this package in an application, you will need to
'import pkg_resources' and then use a 'require()' call similar to one of
these examples, in order to select the desired version:

    pkg_resources.require("pyreadline")  # latest installed version
    pkg_resources.require("pyreadline==2.0")  # this exact version
    pkg_resources.require("pyreadline>=2.0")  # this version or higher

pipでpyreadlineを再インストールしようとしたら、pipも何故かエラーorz
Permission denied? root権限なんだけど..ヌーン

$pip
bash: /usr/bin/pip: /usr/bin/python2.6^M: bad interpreter: Permission denied

pipを再インストール

$easy_install pip
Searching for pip
Reading http://pypi.python.org/simple/pip/
Best match: pip 1.3.1
Downloading http://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#md5=cbb27a191cebc58997c4da8513863153
Processing pip-1.3.1.tar.gz
Writing /tmp/easy_install-wLYZ8D/pip-1.3.1/setup.cfg
Running pip-1.3.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-wLYZ8D/pip-1.3.1/egg-dist-tmp-RBfaCK
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.txt' found under directory 'docs/_build'
no previously-included directories found matching 'docs/_build/_sources'
Adding pip 1.3.1 to easy-install.pth file
Installing pip script to /usr/bin
Installing pip-2.7 script to /usr/bin

Installed /usr/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip

無事起動シタ!

$pip --version
pip 1.3.1 from /usr/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg (python 2.7)

再度pyreadlineをインストール

$pip install pyreadline
Requirement already satisfied (use --upgrade to upgrade): pyreadline in /usr/lib/python2.7/site-packages/pyreadline-2.0-py2.7.egg
Cleaning up...

なんかすでにある的なことを言われたので、-mでもう一回削除したけどダメ
pipでuninstallを試みる

$pip uninstall pyreadline
Uninstalling pyreadline:
  /usr/lib/python2.7/site-packages/pyreadline-2.0-py2.7.egg
Proceed (y/n)? y
  Successfully uninstalled pyreadline

どうやら削除できたようなので、再度インストール

$pip install pyreadline
Downloading/unpacking pyreadline
  Downloading pyreadline-2.0.zip (108kB): 108kB downloaded
  Running setup.py egg_info for package pyreadline

    package init file 'pyreadline/configuration/__init__.py' not found (or not a regular file)
Installing collected packages: pyreadline
  Running setup.py install for pyreadline
    package init file 'pyreadline/configuration/__init__.py' not found (or not a regular file)

Successfully installed pyreadline
Cleaning up...

エラーでたけど..上手くいったのかな?

そしてipythonを起動

$ipython
Python 2.7.3 (default, Dec 18 2012, 13:50:09)
Type "copyright", "credits" or "license" for more information.

IPython 0.13.2 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]:

起動デキター