PyDevを使用してEclipseをセットアップしていて、スクリプト/アプリをデバッグできるのが大好きです。Pylonsをいじり始めたばかりで、WebアプリをデバッグできるようにEclipseを介してpasterサーバーを起動する方法があるかどうか疑問に思っていました。
7 に答える
新しい起動構成を作成する (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"])
--reload オプションを使用しないようにする必要があることを追加したかっただけです。これにより、デバッガーが適切にアタッチできなくなり、ブレークポイントが機能しなくなります。私が遭遇したちょっとしたこと。
引数タブの「作業ディレクトリ」をデフォルトを使用しないように変更することで --reload を機能させることができました (つまり、「その他」->「ファイル システム」->「development.ini が保存されている Pylons のルート」アプリを選択します)。
私もこれを機能させました(ついに)。パイロンをインストールするためにvirtualenvの代わりにbuildoutを使用しました(手順:http ://wiki.pylonshq.com/display/pylonscommunity/Howto+install+Pylons+with+buildout )ので、上記の手順を少し変更する必要がありましたパスが進むにつれて。
-「メインモジュール」には、次のものを使用します。
${workspace_loc:myeclipseprojectname/bin/paster}
(--reloadを追加すると、ブレークポイントが機能しなくなり、これを数回テストしました)
-「プログラム引数」には、次のものを使用します。
serve ${workspace_loc:myeclipseprojectname/mypylonsprojectname/development.ini}
-「WorkingDirectory、Other:」には、次を使用します。
${workspace_loc:myeclipseprojectname/mypylonsprojectname}
-前述のように、[共通タブ]で[コンソールの割り当てを確認してバックグラウンドで起動する]
-試行する前にブレークポイントを設定することを忘れないでください。
おそらく /usr/bin/paster または /usr/local/bin/paster になる Linux では、ペースト スクリプト用で、引数用に次のものがあります。
これは、日食でそれを行う方法についての質問には実際には答えません。しかし、私はwinpdbを使ってpaster serverをデバッグしてきました。これは非常に優れたグラフィカルなPythonデバッガです(easy_install winpdbでインストールできます)。
サーバーを起動するだけです。
winpdb /usr/local/bin/paster serve development.ini
そして、実行ボタンをクリックします。
ウェインが言ったように、--reload オプションを使用しないことが必要です。少なくとも、フォークされたプロセスデバッガーが入る必要があるものを選択するときに、実際の webapp にアタッチする方法を見つけることができませんでした (異なるプロセスに入ることは、「フォーク親」および「フォーク子」デバッガーコマンドで制御できます)。