Eclipseを介したPylonsアプリケーションのデバッグ
質問
PyDevでEclipseをセットアップしており、スクリプト/アプリをデバッグできることが大好きです。 Pylonsをいじり始めたばかりで、webappをデバッグできるようにEclipseを介してpasterサーバーを起動する方法があるかどうか疑問に思っていましたか?
解決
新しい起動構成の作成(Python実行)
メインタブ
paster-script.pyをメインモジュールとして使用します(PythonインストールディレクトリのScriptsサブディレクトリにあります)
PYTHONPATHゾーンにアプリケーションのルートフォルダーを追加することを忘れないでください
引数 ベースディレクトリもルートフォルダに設定します。
プログラムの引数として" serve development.ini"を使用します。 (またはアプリのデバッグに使用するもの")
共通タブ
コンソールの割り当てを確認し、バックグラウンドで起動します
他のヒント
Pythonのインストールをプロジェクトのワークスペースに含めて貼り付けたくない場合は、次のような純粋なPythonドライバーを作成できます。
#!/usr/bin/env python
from paste.script.serve import ServeCommand
ServeCommand("serve").run(["development.ini"])
...そしてEclipseでそれを実行/デバッグします。
注:これは-reload
オプションなしで実行されているため、ホットデプロイを取得できません(つまり、変更を確認するにはサーバーをリロードする必要があります)。または、-reload
オプションを追加してホットデプロイを取得できますが、Pydevはブレークポイントで停止しません。ケーキを持って食べられない...
ServeCommand("serve").run(["--reload", "development.ini"])
yanjostにはそれがあります。--reloadオプションを使用しないことを確認するために必要なものを追加したいだけです。これにより、デバッガが適切にアタッチされなくなり、ブレークポイントが機能しなくなります。ちょっとしたことでした。
デフォルトを使用しないように引数タブの「作業ディレクトリ」を変更することで--reloadが機能するようになりました.iniが保存されます。
Linuxでは、おそらくペーストスクリプトの場合は/ usr / bin / pasterまたは/ usr / local / bin / pasterになり、引数の場合は次のようになります。serve $ {workspace_loc} $ {project_path} /development.ini
これも機能しました(最終的に)。 virtualenvの代わりにbuildoutを使用してパイロンをインストールしました(手順: http: //wiki.pylonshq.com/display/pylonscommunity/Howto+install+Pylons+with+buildout )であるため、上記の手順はパスの範囲内で少し変更する必要がありました。
-"メインモジュール"の場合:
${workspace_loc:myeclipseprojectname/bin/paster}
(-reloadを追加すると、ブレークポイントが機能しなくなり、これを数回テストしました)
-for" Program Arguments"では、次を使用します:
serve ${workspace_loc:myeclipseprojectname/mypylonsprojectname/development.ini}
-"作業ディレクトリ、その他:&quot ;、使用:
${workspace_loc:myeclipseprojectname/mypylonsprojectname}
-上記のように、「共通タブ」、「割り当てコンソールをチェックしてバックグラウンドで起動する」
-そして試行する前にブレークポイントを設定することを忘れないでください。
これは、実際に日食でそれを行う方法についての質問には答えません。しかし、私はwinpdbでpasterサーバーをデバッグしてきました。これは非常に優れたグラフィカルなPythonデバッガーです(easy_install winpdbでインストールできます)。
サーバーを起動するだけです。例:
winpdb /usr/local/bin/paster serve development.ini
[実行]ボタンをクリックします。
ウェインが言ったように、-reloadオプションを使用しない 必要があります。少なくとも、どのフォークされたプロセスデバッガーに入るべきかを選択しても、実際のwebappにアタッチする方法を見つけることができませんでした(異なるプロセスの入力は、「fork parent」および「fork child」」デバッガーコマンドで制御できます)