IPythonの設定
~/.ipython/ipy_user.conf.py に
This is a more flexible and safe way to configure ipython than *rc files
(ipythonrc, ipythonrc-pysh etc.)
とあるので,このファイルを編集することにする.設定の意味はipythonrcの方に書かれているのでそれを参考に.また方針として ip_user_conf.py だけで完結させることにする.(=日本語の問題を解決するために iplib.py を直接編集しない)
設定したのは
- 終了時に確認を取らない
- プロンプトは'>>> ' (ただし -cl で起動する場合と違って色付き)
- C-lでclear-screen
- u','.jo
等で補完が出るように(この場合join) - 日本語関連の不具合を直す
- virtualenvとの連携(元ネタ)
などなど.
#!/usr/bin/python # -*- coding: utf-8 -*- """ User configuration file for IPython""" import IPython.ipapi, IPython.iplib ip = IPython.ipapi.get() import os import sys import site def main(): o = ip.options # see ~/.ipython/ipythonrc o.system_verbose = 0 o.confirm_exit = 0 o.banner = 0 o.prompt_in1 = r'>>> ' o.prompt_in2 = r'.\D: ' o.prompt_out = r'' # remove all input/output separators o.nosep = 1 # M-*を削除.iとoだけで十分かも _binds = [] for b in o.readline_parse_and_bind: if not b.startswith('"\\M-'): _binds.append(b) o.readline_parse_and_bind = _binds o.readline_parse_and_bind.append(r'"\C-l": clear-screen') # alias o.autoexec.append('__IPYTHON__.magic_ed = __IPYTHON__.magic_edit') # greedy complete (ex: ','.j<TAB> -> ','.join) import ipy_greedycompleter for m in ('os', 'sys', 'math'): ip.ex("import %s" % m) IPython.iplib.InteractiveShell.runsource = _runsource # virtualenv (from http://www.ianlewis.org/jp/ipython-virtualenv) if 'VIRTUAL_ENV' in os.environ: virtual_env = os.path.join(os.environ.get('VIRTUAL_ENV'), 'lib', 'python%d.%d' % sys.version_info[:2], 'site-packages') site.addsitedir(virtual_env) print 'VIRTUAL_ENV ->', virtual_env del virtual_env def _runsource(self, source, filename='<input>', symbol='single'): # source=source.encode(self.stdin_encoding) if source[:1] in [u' ', u'\t']: source = u'if 1:\n%s' % source try: code = self.compile(source,filename,symbol) except (OverflowError, SyntaxError, ValueError, TypeError): self.showsyntaxerror(filename) return None if code is None: return True self.code_to_run = code if self.runcode(code) == 0: return False else: return None main()