HOME Python 書き込む

xyzzy から pydoc を利用する


1. はじめに

python 2.4 をインストールすると、 python document を HTML または text 形式で生成する pydoc というスクリプトが付いてきます。 このスクリプトは大変よく出来ていて、ソースコードに含まれるドキュメントから、 インタープリターのオンラインヘルプ、 や HTML 形式のマニュアルを自動で生成します。 (詳しい説明は pydoc を使って生成した pydoc のマニュアルを見てください。) ここでは、マニュアルを表示するローカルホストを起動させ、 それをブラウザで表示する方法について述べます。 また、これらのことを行う xyzzy スクリプトも書いてみました。

2. ローカルホストの起動とブラウザでの表示

2.1. ローカルホストの起動

DOS プロンプトから、
python c:\python24\lib\pydoc.pyc -p 50001
と打ち込むとローカルホストが起動します。"50001" はポート番号で、 50000 台の番号を選ぶのが安全でしょう。

2.2. ブラウザを使った表示

ブラウザの URL エントリーに
http://localhost:50001/
と打ち込むとコンテンツが表示されます。 関数、メソッド、定数が色分けされていて、とても見やすい構成になっています。 これがあればポケットレファレンスの類は必要ないでしょう。

3. ドキュメントを表示する xyzzy スクリプト

ドキュメントを表示する xyzzy スクリプトを示します。 このスクリプトは、ローカルホストを起動するバッチファイル(pydoc.bat)、 xyzzy スクリプト(add2py.l) と.xyzzy へ記述する部分の3つからなっています。

3.1. ローカルホストを起動するバッチファイル

1行だけのバッチファイルを作成します。次の行を "pydoc.bat" という名前のバッチファイル に書きます。
python c:\python24\lib\pydoc.pyc -p 50001

3.2. *py-mode-hook* で呼び出す xyzzy スクリプト

以下のコードを add2py.l というファイルに書きます。add2py.l は xyzzy/site-lisp においておきます。
  
;;; add2py.l

(provide "add2py")

;;; The contents of pydoc.bat is just one line
;python c:\python24\lib\pydoc.pyc -p 50001 
(defvar *pydoc-server* "C:\\bin\\pydoc.bat")
(defvar *pydoc-browser* "C:\\Program Files\\Mozilla Firefox\\firefox.exe")
(defvar *pydoc-url* "http://localhost:50001/")

(let (server-on)
  (defun call-pydoc ()
    (interactive)
    (unless server-on
      (call-process *pydoc-server* :show :hide)
      (setq server-on t)
      (sleep-for 2))
    (let ((cmd (concat *pydoc-browser* " " *pydoc-url*)))
      (call-process cmd)))
  
  (defun server-off ()
    (interactive)
    (setq server-on nil)))

(eval-when (:load-toplevel :execute)
  (define-key ed::*py-mode-map* #\C-h    'call-pydoc))
ここではブラウザは Fire Fox を使っていますが、ふだん使っているブラウザに変更してください。

3.2. ".xyzzy" に追加するスクリプト

.xyzzy に以下のスクリプトを追加してください。
(add-hook 'ed::*py-mode-hook* #'(lambda () (require "add2py")))
これで、xyzzy を用いた編集作業中に Ctrl+h をタイプすると pydoc が立ち上がります。

4. その他

pydoc はよく出来たスクリプトですが、wx などの大きなモジュールを表示させると ものすごく時間がかかります。 この場合はそのモジュールのドキュメントを個別に書き出すほうが良いでしょう。 DOS 窓を開いて次のように入力します。
  1. doc を保存するディレクトリを作り、そのディレクトリに行って python を起動する。
    mkdir wx_doc
    cd wx_doc
    python
    
  2. pydoc をインポートし、writedocs を走らせる。パッケージの大きさにもよるが、 数10分で出来上がる。
    import pydoc
    pydoc.writedocs("C:/Python24/Lib/site-packages/wx-2.5.3-msw-unicode")