linuxBean14.04(135)LibreOffice5.2のPythonマクロをリモートデバッグする

公開日: 2016年12月29日 更新日: 2019年05月11日

旧ブログ

t f B! P L
今度はリモートデバッグできることを確認します。リモートデバッグとはLibreOffice(5)PythonでLibreOfficeが動く仕組み:UNOのマクロモードをデバッグする方法です。今回はsites.pthでpydevd.pyへのPYTHONPATHを設定します。

前の関連記事:linuxBean14.04(134)Eclipse4.6とLibreOffice5.2のPythonマクロ


pydevd.pyがあるフォルダをマクロのPYTHONPATHに追加する


pydevd.pyがある/opt/eclipse4.6/plugins/org.python.pydev_5.4.0.201611281236/pysrcをマクロモードのPYTHONPATHに追加します。

思いつくやり方は大きく分けて2つあります。

まずlinuxBean14.04(93)Eclipse4.5にPyDevをインストールでやったsites.pthにパスを追記する方法です。

sites.pthの作り方はlinuxBean14.04(38)LibreOfficeバンドルPythonにパッケージを追加に書いています。

linuxBean14.04(134)Eclipse4.6とLibreOffice5.2のPythonマクロでLibreOffice5.2のバンドルPython3.5.0とわかっています。

なのでsites.pthの置き場所は、~/.local/lib/python3.5/site-packages/opt/libreoffice5.2/program/python-core-3.5.0/lib/python3.5/site-packagesのどちらかです。

前者に置くとマシンにあるすべてのPython3.5インタープリターに影響し、後者に置くとLibreOfficeのバンドルPythonのみに影響します。

今回は後者に置くことにします。

sudo mkdir -p /opt/libreoffice5.2/program/python-core-3.5.0/lib/python3.5/site-packages

まずこれで後者のフォルダが作成できます。

そこにpydevd.pyがあるフォルダのパス/opt/eclipse4.6/plugins/org.python.pydev_5.4.0.201611281236/pysrcを書いたsites.pthファイルを置きます。


Eclipse4.6を再起動するとPYTHONPATHの追加の確認ダイアログがでるので、Apply selected changes (Ignore unselected)ボタンをクリックします。

デバッグコードを挿入する

import pydevd; pydevd.settrace()
このコードをデバッグをデバッグを開始したいマクロの場所に挿入します。
1
2
3
4
5
6
7
8
9
10
11
12
def HelloWorld_Writer():
                import pydevd; pydevd.settrace()
                doc = XSCRIPTCONTEXT.getDocument()
                doc.getText().setString("Hello World!")
if __name__ == "__main__":
                import unopy
                XSCRIPTCONTEXT = unopy.connect()
                if not XSCRIPTCONTEXT:
                                print("Failed to connect.")
                                import sys
                                sys.exit(0)
                HelloWorld_Writer()
test.pyの2行目に追加して保存しました。

5行目以降はオートメーションのためのコードなのでデバッグコードを挿入する意味はありません。

これで準備完了です。

Debugパースペクティブを追加する


Eclipseでデバッグするマクロのコードであるtest.pyを開いてDebugパースペクティブに切り替えます。

Eclipseで、Windows→Perspective→Open Perspective→Other。

Debugを選択してOK。

Pydev→Start Debug Server。

Debug Server at port: 5678

コンソールをみるとこれがでてデバッグサーバーが起動したことがわかります。

LibreOffice5.2でマクロを起動する


Writerを起動してデバッグコードを挿入したマクロを実行します。

WriterがフリーズするのでEclipseに切り替えるとtest.pyがブレークされていることがわかります。



デバッガのスピードアップをする方法


Terminalでpydevdをインポートすると面白いことに気が付きました。
pq@pq-VirtualBox:~$ /opt/libreoffice5.2/program/python
Python 3.5.0 (default, Dec 19 2016, 14:38:40)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pydevd
warning: Debugger speedups using cython not found. Run '"/opt/libreoffice5.2/program/python.bin" "/opt/eclipse4.6/plugins/org.python.pydev_5.4.0.201611281236/pysrc/setup_cython.py" build_ext --inplace' to build.
>>>
cythonを使ってのデバッガのスピードアップがみつからないとのことです。

これについて調べてみるとFaster debugger in PyCharm 5.1 | PyCharm Blogを見つけました。

"/opt/libreoffice5.2/program/python.bin" "/opt/eclipse4.6/plugins/org.python.pydev_5.4.0.201611281236/pysrc/setup_cython.py" build_ext --inplace

このコマンドでスピードアップができるようなのですが、やってみるとできませんでした。
pq@pq-VirtualBox:~$ "/opt/libreoffice5.2/program/python.bin" "/opt/eclipse4.6/plugins/org.python.pydev_5.4.0.201611281236/pysrc/setup_cython.py" build_ext --inplace
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
 
Current thread 0xb7173700 (most recent call first):
中止
たぶんバンドルPythonのモジュールが足りないせいなのだと思いますが、いまはスピードアップする必要性を感じないのと、まずはバンドルPythonだけで動くマクロを作る予定なのでスピードアップはまたそのうちやってみることにします。

PyCharmとPyDevのpydevd.pyは同じものなのでしょうか?

(2017.5.5追記。AnacondaのインタープリターにしているPyDevプロジェクトでは、表示された次のコマンドで実行できました。"/home/pq/anaconda3/bin/python" "/home/pq/.eclipse/org.eclipse.platform_4.6.2_944779670_linux_gtk_x86/plugins/org.python.pydev_5.6.0.201703221358/pysrc/setup_cython.py" build_ext --inplace)

参考にしたサイト


Faster debugger in PyCharm 5.1 | PyCharm Blog
デバッガをスピードアップする方法。

次の関連記事:linuxBean14.04(136)WindowsのLibreOfficeマクロをlinuxBeanでリモートデバッグする

ブログ検索 by Blogger

Translate

«
Dec. 2016
»
Sun
Mon
Tue
Wed
Thu
Fri
Sat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Created by Calendar Gadget

QooQ