前の関連記事:linuxBean14.04(92)MySQL Workbench6.3.4とGitのインストールメモ
linuxBean14.04(6)LibreOffice4.3.7とPyCharmの設定のあとLibreOfficeをオートメーションでPyCharmから動かしてデバッグしていましたが、拡張機能でPythonを動かした状態はオートメーションでは再現できないのでEclipseでリモートデバッグすることにしました。
Eclipseをsudoで起動した状態でPyDevをインストールする
linuxBean14.04(46)Eclipse Modeling ToolsのインストールのEclipse Modeling ToolsのEclipse4.5にPyDevをインストールします。
Eclipseのインストールは単純に任意のフォルダに内容を展開させるだけなのでどこのフォルダに置いてもよいのですが、私の場合はroot権限の/optフォルダに置きました。
なのでEclipseのフォルダの操作にはroot権限が必要です。
これまでlinuxBean14.04(51)Eclipse4.5のインストールと静的コールグラフ生成などでEclipseのプラグインをインストールした時は必要なときはスーパーユーザーのパスワードの入力を求められましたがPyDevではインストール途中でそのようなパスワード入力を求められませんでした。
(2015.1.3追記。しかしlinuxBean14.04(94)Eclipse4.5.1からGistに投稿するプラグインGitHub Mylyn ConnectorのインストールでプラグインGitHub Mylyn Connectorのインストールではrootのパスワードなしにちゃんと/opt/eclipse/pluginsフォルダにインストールされていましたのでPyDevのインストールがうまくいかない原因ははっきりしませんね。)
一見インストールがうまくいったようにみえますがEclipseをインストールした/opt/eclipseフォルダにあるpluginsフォルダをみるとPyDev関係のファイルが一つもインストールされていませんでした。
ということでPyDevはroot権限でEclipseを起動してインストールする必要がありました。
sudo /opt/eclipse/eclipse
Terminalからsudoでeclipseを起動します。
他のユーザーフォルダのworkspaceを指定するとlinuxBean14.04(134)Eclipse4.6とLibreOffice5.2のPythonマクロのエラーが出ることがわかりましたので、rootのworkspaceを指定します。)
Help→Install New Software。
http://pydev.org/updates、をリポジトリに追加します。
PyDevにチェックを付けてNextボタンをクリック。
(2017.3.23追記。linuxBean14.04(154)Eclipseのプラグインが全くインストールできなくなるでEclipse Java EE IDE for Web Developers. Version: Neon.2 Release (4.6.2)をインストールし直したあとはPyDev Mylyn Integrationもインストールしました。)
必要なファイルのダウンロードが始まります。
ライセンスの了承のチェックボタンをクリックしてFinishするとダウンロードしたファイルのインストールが始まります。
これもチェックをつけて「OK」。
インストールが完了するとEclipseの再起動が要求されるので再起動します。
再起動したあとはroot権限で起動していると思うので終了して普通に起動し直します。
LibreOfficeのマイマクロフォルダをリンクしてPyDevプロジェクトを作成する
linuxBean14.04(4)PyCharmをSynapticパッケージマネージャからインストールで作ったLibreOfficeのマイマクロフォルダ/home/ユーザー名/.config/libreoffice/4/user/Scripts/pythonをリンクしたPyDevプロジェクトを作成します。
Eclipse + Pydev + PyUNO - N->N->Nを参考にプロジェクトを作成しました。
File→New→Other。
PyDevフォルダ以下にあるPyDev Projectを選択してNext。
Project nameはLibreOffice5.0にしました。
(2016.1.3追記。プロジェクト名は拡張機能名などがよいでしょう。
あとでプロジェクト名を変更しようとするとout of sync with file systemと言われて変更できませんでした。
このときはプロジェクトを右クリック→Refrech、で名前変更できるようになりました。)
LibreOfficeのマイマクロフォルダをリンクしてPyDevプロジェクトを作成するのでCreate links to existing sources (select them on the next page)を選択します。
インタープリターを設定しないと次に勧めませんのでLibreOfficeのバンドルPythonに設定をします。
Please configure an interpreter before proceedingをクリック。
「Manual Confg」をクリック。
「Browse」をクリックしてLibreOffice5.0のバンドルPythonを指定しました。
Interpreter Nameは自動的に入力されました。
System Libsに追加するフォルダパス一覧が提示されます。
今回使用したマシンではlinuxBean14.04(86)AnacondaのパッケージをLibreOfficeマクロで使うで~/.local/lib/python3.3/site-packages/sites.pthを作成してanaconda3のパスを追加してあるので大量のパスが提示されていますが、そうしていなければ通常は上から4つか5つのパスが提示されているだけと思います。
最後にある/home/pq/.config/libreoffice/4/user/Scripts/pythonがLibreOffice5のマイマクロフォルダのルートパスです。
sites.pthにこのマイマクロフォルダのパスを設定していなくても次のソースファイルの設定でこのパスを設定するのでとくに問題ないと思います。
今回はすべてチェックがついたまま「OK」をクリックしました。
これで「Next」をクリック。
「Finish」。
パッケージエクスプローラにJavaのプロジェクトがあるとエラーがでてきましたがPyDevのプロジェクトの作成には影響ないようです。
パッケージエクスプローラからJavaのプロジェクトを削除してPyDevのプロジェクトを作成するとエラーはでてきませんでした。
パッケージエクスプローラにはリンクしたソースフォルダの内容が反映されています。
System Libs以下にはインタープリターの設定時に追加したパスが反映されています。
パースペクティブツールバーにはPyDevのパースペクティブが追加されました。
オートメーションでEclipseからPythonでLibreOfficeを動かす
unopy.pyとtest.pyはlinuxBean14.04(6)LibreOffice4.3.7とPyCharmの設定ですでに作成してあるのでLibreOfficeをソケット通信可能な状態で起動したあとWriterを起動してtest.pyをEclipiseから実行してみました。
test.pyを開いた状態で右クリック→Run As→Python Run。
問題なく実行されましたがコンソールには何も出力されませんでした。
エラーがあるときはちゃんとコンソールに出力されました。
Eclipse + Pydev + PyUNO - N->N->Nに書いてあるような環境変数の設定はとくにしなくても動きました。(LibreOfficeだからなのかsites.pthを設定してあるからなのかLinuxだからかなのかは未確認です。)
LibreOffice5のUNOコンポーネントで動くPythonをEclipse4.5でリモートデバッグする設定
LibreOffice5(15)Javaの例をデバッグ情報を追加してビルドするでやったJavaのデバッグと違ってPythonでリモートデバッグするには実行するPythonコードにデバッグ用のコードを追加しないといけません。
import pydevd; pydevd.settrace()追加するコードはこの1行だけです。
このコードをデバッグを開始したい場所に挿入します。
インポートするモジュールpydevはEclipseのプラグインフォルダ下のorg.python.pydev_4.4.0.201510052309/pysrcにありました。
フォルダ名の数値部分はバージョン番号のようなのでバージョンによって異なるかもしれません。
このフォルダにあるモジュールにアクセスできるようにPYTHONPATHを設定します。
今回はlinuxBean14.04(86)AnacondaのパッケージをLibreOfficeマクロで使うで作成した~/.local/lib/python3.3/site-packages/sites.pthの最後に/opt/eclipse/plugins/org.python.pydev_4.4.0.201510052309/pysrcを追記しました。
sites.pthファイルを編集して保存した途端にEclipseが反応しました。
「Apply selected changes (Ignore unselected)」ボタンをクリックしました。
リモートデバッグを開始するにはまずデバッグサーバーを起動します。
EclipseでDebugパースペクティブに切り替えます。
Pydev→Start Debug Server。
コンソールをみるとデバッグサーバーが起動したことがわかります。
あとはimport pydevd; pydevd.settrace()を挿入したPythonコードを実行するとEclipseに切り替わり実行しているPythonコードがDebugパースペクティブで表示されます。
(2016.2.17追記。リモートデバッグは万能ではないようで、LibreOfficeの拡張機能についてはLibreOffice5(18)拡張機能python-tokencounter-calc-addin.oxtをリモートデバッグするではうまくいきましたが、LibreOffice5(26)MRI - UNO Object Inspection Tool:その2ではうまくいきませんでした。またsys.settrace()を使うスクリプトのデバッグは難しいようです。linuxBean14.04(101)pycallgraphをEclipseのPyDevプラグインでリモートデバッグ参照。)
参考にしたサイト
PyDev
EclipseでPythonのデバッグを行うためのプラグイン。
Install
PyDevのインストール方法。
Eclipse + Pydev + PyUNO - N->N->N
PyDevを使ってOpenOfficeのPythonをデバッグする方法。
Remote Debugger
PyDevのリモートデバッグの設定方法。
Eclipse, Aptana, PyDev, LiClipse ... oh my - Stack Overflow
PyDevの開発者によるLiClipse、Aptana Studio、EclipseでのPythonの扱いの比較。
0 件のコメント:
コメントを投稿