前の関連記事:linuxBean14.04(158)Pythonモジュールを多言語対応にする
EclipseでUNO Python ObjectのPyDevプロジェクトの作成
linuxBean 14.04
LibreOffice 5.2.6.2 (linuxBean14.04(131)LibreOfiice5.2のインストール参照)
Eclipse Java EE IDE for Web Developers. Version: Neon.2 Release (4.6.2)
PyDev5.5.0
これらを使ってlinuxBean14.04(149)LibreOfficeマクロ開発環境の構築:その1と同様にしてPyDevプロジェクトを作成します。
unohelper.ImplementationHelper()を使う例としてPython-UNO bridge
のtuplestrm.pyを使います。
ElicpseでFile→New→PyDev Project。
プロジェクト名はLibreOfficeRemoteDebugにしました。
インタープリターは/opt/libreoffice5.2/program/pythonです。
Create 'src' folder add it to the PYTHONPATHを選択してFinishしました。
プロジェクトのsrcフォルダにpyファイルを作成しそこにPython-UNO bridgeのtuplestrm.pyのコードを入れてインデントを修正してtuplestrm.pyという名前で保存しました。
このままではLibreOfficeからみてPYTHONPATHにないのでlinuxBean14.04(149)LibreOfficeマクロ開発環境の構築:その1と同様にうGitリポジトリにしてWorking Treeをマイマクロフォルダにします。
PyDev Package ExplorerでLibreOfficeRemoteDebugプロジェクトを右クリック→Team→Share Project。
Createボタンをクリックして~/.config/libreoffice/4/user/Scripts/python/LibreOfficeRemoteDebugというフォルダを作成して選択しました。
するとWorking treeもこのフォルダになります。
tuplestrm.pyにデバッグコードを挿入します。
import pydevd; pydevd.settrace()
これをg_ImplementationHelper = unohelper.ImplementationHelper()の前の3行目に挿入しました。
とりあえず最初のコミットをしておきます。
pydevdモジュールへのPYTHONPATHを通す
LibreOfficeからpydevdモジュールをインポートできるようにPYTHONPATHを通します。
~/.local/lib/python3.5/site-packagesのsites.pthに以下のパスを追加しました(linuxBean14.04(38)LibreOfficeバンドルPythonにパッケージを追加参照)。
/opt/eclipse4.6jee/plugins/org.python.pydev_5.6.0.201703221358/pysrc
うーん、ここでこのフォルダがここにないことに気が付きました。
奇妙なことに一般ユーザーでPyDevをインストールするとpluginsフォルダにPyDev関係のフォルダが何もでてきません。
だけどpydevd以外の操作はできてしまいます。
理解に苦しむ現象ですけどpydevdへのパスを設定したいのでlinuxBean14.04(133)Eclipse4.6(Neon)とPyDev5.4のインストールの通りrootでPyDevをインストールし直しました。
デバッグサーバーを起動する
デバッグコードを挿入した部分を拡張機能を拡張機能マネージャーに登録した時点で実行されるのでまずデバッグサーバーを起動しておかないといけません。
Eclipseでデバッグパースペクティブにして、PyDev→Start Debug Server。
ConsoleビューにDebug Server at port :5678と出てくるはずです。
Eclipseはこのままにしておきます。
UNO Python Objectを拡張機能マネージャーに登録する
LibreOfficeを起動してツール→拡張機能マネージャー。
追加ボタンをクリックして先ほど作成したLibreOfficeRemoteDebugフォルダのsrcフォルダにあるtuplestrm.pyを選択して登録します。
選択するときはファイルフィルターをUNO Python Componentにしていないとpyファイルが見えません(LibreOffice5(6)既存インターフェイスを継承してPythonスクリプトをUNOコンポーネント化する例:その1参照)。
ファイルを選択してOKするとLibreOfficeが動かなくなります。
Eclipseを見てみるとデバッグコードの部分でブレークされていることがわかります。
LibreOfficeの拡張機能のキャッシュに展開されたソース上でブレークされていることがわかります。
参考にしたサイト
Python-UNO bridge
UNO Python componentの例がExamplesにいくつかあります。
0 件のコメント:
コメントを投稿