WindowsやmacOSのLibreOfficeにはPythonインタプリタが同梱されています。PythonがLibreOfficeのマクロを記述する言語の1つとして用いられるためです。
例えばWindows(x86-64)上でLibreOfficeをお使いの場合、既定ではC:\Program Files\LibreOffice\program\python.exe
にそのプログラムが見つかります。これを実行すると、LibreOfficeのAPIであるUNOのpythonモジュールをすぐimportして使えます:
>>> import uno
しかし、pythonマクロを一般のpythonコードと組み合わせようとすると、外部のライブラリやモジュールを使いたくなります。また、プログラミングの際にはipythonといった対話型インタプリタも使いたくなります。
今回は、LibreOfficeに同梱されたインタプリタをベースに、そのような環境を簡単に実現する方法を紹介します。具体的には
というやり方を説明します。(Windows 10上のLibreOffice 6.0.2で動作検証しています。)
1. まずpipのドキュメンテーションに書かれているようにget-pip.pyをダウンロードします。コマンドプロンプト(cmd
)を立ち上げ、以下のコマンドのようにPATH環境変数を設定してからpipをインストールします。
> set PATH=C:\Program Files\LibreOffice\program;%PATH%
> python get-pip.py --user
上記に含まれる"--user"というオプションが重要で、これによりそのユーザー個別の場所にpipがインストールされます。仮にユーザー名がfooであれば、C:\Users\foo\AppData\Roaming\Python\Python35
といったフォルダにインストールされているはずです。
2. 次に、インストールできたpipを使って、ipythonをインストールします。そこで、pipが見つかるようさらにPATHを設定してから、pipを呼び出します:
> set PATH=C:\Users\foo\AppData\Roaming\Python\Python35\Scripts;%PATH%
> pip install --user ipython
> ipython
ipythonもpipと同じフォルダに置かれていることに注意してください。
3. そして、SciPyのインストールも以下のように簡単です:
> pip install --user scipy
> python -c "from scipy.constants import golden; print(golden)"
以上のようにすれば、任意のpythonパッケージをインストールできるようになります。この方法には、ユーザーに管理者権限がなくても良い、構築した環境を丸ごと消すのも簡単(フォルダを削除するだけ)といった利点があります。ただし、matplotlibなどのbz2モジュールに依存するライブラリは、Windows版LibreOfficeのバグによりロード時にエラーになります。