fixedpoint.jp


Python環境としてのLibreOfficeをより便利に使うために (2018-03-23)

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に同梱されたインタプリタをベースに、そのような環境を簡単に実現する方法を紹介します。具体的には

  1. パッケージマネージャーpipをインストールする
  2. ipythonをインストールする
  3. pythonパッケージを導入する例として、SciPyをインストールする

というやり方を説明します。(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のバグによりロード時にエラーになります。


© 2006-2023 fixedpoint.jp