私はPyDevでEclipseセットアップを行い、スクリプト/アプリケーションのデバッグが大好きです。私はちょうどPylonsで遊び始めていて、Eclipseを使ってペーストサーバーを起動してwebappをデバッグできる方法があるのだろうかと思っていましたか?Eclipse経由のPylonsアプリケーションのデバッグ
答えて
(あなたがPythonのインストールディレクトリにスクリプトのサブディレクトリにそれを見つけることができる新しい起動設定(Pythonの実行)、メインモジュールとしてpaster-script.py
メインタブ
使用を作成します。 )
PYTHONPATHゾーンに
引数 012を、アプリケーションのルートフォルダを追加することを忘れないでください。ベースディレクトリをルートフォルダにも設定します。
プログラム引数は、( "やアプリをデバッグするために使用するものは何でも)「development.iniの奉仕」を使用したよう
共通タブ
チェック
yanjostが持っているバックグラウンドでコンソールと打ち上げを割り当てますそれだけで、--reloadオプションを使わないようにする必要があることを追加したかったので、デバッガが正しく接続されず、ブレークポイントが動作しなくなります。
これは、おそらく/ usr/bin/pasterまたは/ usr/local/bin/pasterで、貼り付けスクリプトや引数には次のようなものがあります:$ {workspace_loc} $ {project_path} /development.ini
私は、デフォルトを使用しないように、引数タブの 'Working directory'を変更することによって、--reloadを得ることができました。 development.iniが保存されている「その他」→「ファイルシステム」→「Pylonsのルート」を選択します。
私はまた、この(最終的に)働いています。 virtualenvの代わりにbuildoutを使用してパイロンをインストールしました(指示:http://wiki.pylonshq.com/display/pylonscommunity/Howto+install+Pylons+with+buildout)ので、上記の手順はパスを変更するまで少し変更する必要がありました。
は、 "メインモジュール" -for、私が使用します。${workspace_loc:myeclipseprojectname/bin/paster}
(追加--reloadが私のために動作しませブレークポイントを作った、と私はこの数回テスト)
-for「プログラムの引数」、私が使用:-for
serve ${workspace_loc:myeclipseprojectname/mypylonsprojectname/development.ini}
"作業ディレクトリ、その他:"、私が使用します。
${workspace_loc:myeclipseprojectname/mypylonsprojectname}
「共通タブ」で、上記の-as、
「を背景に、コンソールと打ち上げを割り当てるチェック」 - としようとする前にブレークポイントを設定することを忘れないでください。
あなたはむしろペースターを取得するには、プロジェクトのワークスペースに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"])
これは、日食でそれを行う方法について本当に答えていません。しかし、私はwinpdb(これはeasy_install winpdbでインストールできます)のグラフィカルなpythonデバッガです。
だけ
winpdb /usr/local/bin/paster serve development.ini
:例えば、あなたのサーバを起動して実行]ボタンをクリックしてください。
ウェインは言ったように、ではなく、 --reloadオプションを使用する必要があります。少なくともフォークされたプロセスデバッガに入るときは、実際のwebappにアタッチする方法を見つけることができませんでした(異なるプロセスへの入力は "fork parent"と "fork child"デバッガコマンドで制御できます)。
私は、repoze.profileを有効にする私のケースでは、pasterがwinpdbで実行されたときに深すぎる再帰を引き起こすことも分かりました。 –
これはPyramidアプリでもうまく機能します。 – Seth