2010年10月19日火曜日

Eclipse 上での Django プロジェクト と デバック

Eclipseを使用すれば、Djangoのデバックができる。このため既存のプロジェクトをEclipseに登録するのと、デバック設定について解説する。

  1. EclipseでDjangoプロジェクト登録

    1. メニューの [ファイル]→[新規]→[その他]→[Pydev Django Project]
      でプロジェクト作成

      既存のプロジェクトのEclipseへの登録では、以下の点を注意する。
      • Djangoコマンドで作成したプロジェクトに対しても、プロジェクトの新規作成で登録を行う。この時、既存のプロジェクト・ディレクトリーを指定して作成する。
      • プロジェクトを作成するとプロジェクト関連ファイルや想定外のディレクトリーを生成てしまうため、
         [デフォルトSRCフォルダーを作成し、pythonpathへ追加]
        というオプションはチェックしたまま作成する。
        (ダミーでSRCフォルダーにファイルを作成する)
      • デフォルトSRCフォルダーは使用しないので削除する。
        • 新規作成後にパッケージ・エクスプローラーから削除する。
        • PydevのPYTHONPATHからも削除する。
          (削除は 「Pydev-PYTHONPATHを設定」 と同じ画面から行う)

    2. Pydev-PYTHONPATHを設定

      PydevのPYTHONPATHと、コマンドラインPythonインタープリターのPYTHONPATHは各々独立している。このため必要なディレクトリーをPydevのPYTHONPATHに設定する必要がある。

      ここでは特にPydevデフォルトでないソース・ディレクトリーを使用している場合の設定手順を書く。

      1. パッケージ・エクスプローラーでプロジェクトを選択
      2. 右クリック→[プロパティ]→[Pydev-PAYTHONPATH]
      3. ソース・フォルダー(タブ)に、ソースファイルのディレクトリを指定

      サンプルとして、Djangoコマンドライン・ツールを利用して作成したソースを登録してみる。例えば次のようなコマンドで作成したソースである。
      python django-admin.py startproject myprj
      python manage.py startapp myapp
      
      プロジェクト関連ソースは myprj 。
      アプリケーション関連ソースは myprj/myapp となる。
      この両方を登録すればよい。

      PyDev PYTHONPATH


  2. デバック設定

    メニューの [実行]→[デバックの構成] から「構成の作成、管理、および実行」ウィンドウを開いて、以下のデバック設定を行う。

    1. パースペクティブは [PydevDjango] を選択し [新規の起動構成] ボタンを押して、新しい構成設定画面を開く。
    2. 名前は適当に入力し、プロジェクトには関連付けたい Djangoプロジェクトを選択する。
    3. メイン(タブ)の[メインモジュール]項目に、(デバック対象のプロジェクト・ディレクトリにある) manage.py を指定。
    4. 引数(タブ)の[プログラムの引数]項目に、runserver --noreload を指定。

      EclipseにAptanaをインストールしている場合、Aptanaが8000ポートを使っていることがある。このため、[Errno 10013] というエラーが出る(出る時と出ない時があるよう?)。ポートが競合しないように[プログラム引数]を次のように変更する。

      runserver localhost:8001 --noreload

      この場合、アプリケーションのURLも8001ポートに変更になる。

      http://localhost:8001/admin/  (http://127.0.0.1:8001/admin/

    5. [適用] ボタンを押し保存する。


    デバック実行については、次の手順で行う。

    1. デバックしたいソースの箇所にブレークポイントを設定する。
    2. メニューの[実行]→[デバック構成]で先ほど保存した構成を選択し、[デバック] ボタンを押す。
    3. ブラウザーでアプリケーションのURLにアクセスする。

    するとEclipse上でデバックが始まる。