前の関連記事: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()このコードをデバッグをデバッグを開始したいマクロの場所に挿入します。
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
デバッガをスピードアップする方法。
0 件のコメント:
コメントを投稿