前の関連記事:LibreOffice(27)Java-UNO BootstrapはWindows7 64bitでは動かない?
Git(5)PyCharmでGitを使うでLibreOffice4.1.4.2付属のPython3.3.0ではパスに全角文字が使えないとわかったのでPythonだけバージョンアップしようとしたのですがどうもやり方がわからないのでLibreOfficeを4..2.2にアップグレードしてしまうことにしました。
LibreOffice4.2.2へのアップグレードに踏み切れなかった理由
それはAPIリファレンスで4.1.4.2のものと4.2のもので変更になっているAPIに気づいたからです。
それはメッセージボックスを表示させるXMessageBoxFactoryのcreateMessageBox関数です。
XMessageBox createMessageBox( [in] XWindowPeer aParent, [in] Rectangle aPosSize, [in] string aType, [in] long aButtons, [in] string aTitle, [in] string aMessage )LibreOffice(16)LibreOffice 4.1 SDKをインストールでインストールしたLibreOffice_4.1.4_Win_x86_sdk.msiに付属のLibreOffice 4.1 API referenceではcom::sun::star::awt::XMessageBoxFactoryのcreateMessageBoxの引数はこのように6個あります。
ところがLibreOffice4.2 SDK API Referenceでは5個になっています。
XMessageBox createMessageBox ( [in] com::sun::star::awt::XWindowPeer aParent, [in] MessageBoxType eType, [in] long nButtons, [in] string sTitle, [in] string sMessage )2個目の意味がよくわからないRectangle aPosSizeという引数が省略されて改善されてはいるのですけど、いままでネットに蓄積された例文でお勉強している身にとってはつまづきのもとです。
XMessageBoxFactoryにはどこにも4.1から4.2で変更になったとは書いていないです。
わかってしまえばたやすいことですけどね。
今後は4.1のAPI referenceと4.2のAPI referenceを見比べて調べようと思います。
LibreOffice4.2.2へのアップグレードに踏み切った理由
ひとつは冒頭に書いたようにLibreOffice4.1.4.2付属のPython3.3.0ではパスに全角文字が使えないということですが、ほかにも不具合がでそうなのでいまのところ全角文字をパスに使わないように気をつけるつもりです。
最大の理由はPython付属のSQLiteを使ってみようと思ったからです。
SQLiteはPython2.5以降に標準で付属しているようですがLibreOffice4.1.4.2付属のPython3.3.0ではSQLiteは付属していないようです。
Bug 59954 – unable to import sqlite library from libreoffice's embedded python
こんなQ&Aを見つけたのでまずLibreOffice4.1.4.2のC:\Program Files (x86)\LibreOffice 4\programでコマンドウィンドウを開いてPythonを起動してSQLiteをimportするコマンドを打ってみました。
C:\Program Files (x86)\LibreOffice 4\program>python
Python 3.3.0 (default, Dec 10 2013, 18:10:50) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'sqlite'
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'sqlite3'
>>> import libsqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'libsqlite3'
>>> exit
Use exit() or Ctrl-Z plus Return to exit
>>> exit()
Python 3.3.0 (default, Dec 10 2013, 18:10:50) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'sqlite'
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'sqlite3'
>>> import libsqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'libsqlite3'
>>> exit
Use exit() or Ctrl-Z plus Return to exit
>>> exit()
だめです。Q&Aの通りの結果です。
同じバージョンのPythonをフルインストールしてSQLiteモジュールをもってくれば使えた、と質問者が最後に書いてくれています。
ということでPython3.0.0をフルインストールしようとReleases | Python.orgをみたら3.3.5しかないのですよね。
それでLibreOffice4.1.4.2のPython3.3.0をPython3.3.5にアップグレードする方法を探したのですけど見つけられませんでした。
python.exeだけを置き換えればよいというわけではなさそうで、LibreOffice(2)Pythonの統合開発環境PyCharmのインストールでも迷いましたがLibreOffice4.1.4.2ではpython.exeが
C:\Program Files (x86)\LibreOffice 4\program\python.exeと
C:\Program Files (x86)\LibreOffice 4\program\python-core-3.3.0\bin\python.exeの2つあります。
前者の方がpython3.dllとかpython33.dllなどと一緒に動いているようなのです。
[Solved] Python 3 and Calc (View topic) • Apache OpenOffice Community Forum
これを読んでも私には難しそうです。
LibreOffice 4.2: focusing on performance and interoperability, and improving the integration with Microsoft Windows | The Document Foundation Blog
このコメントをみるとLibreOffice4.2のPythonは3.3.3のようです。
現在ダウンロードできる3.3.5ではないですが、3.3.0より近そうなので遂にLibreOffice4.2をダウンロードすることにしました。
LibreOffice4.2.2のインストール
ダウンロード » LibreOffice : 自由なオープンソースのオフィススイート
ここからLibreOffice Windows, バージョン 4.2.2, 日本語をダウンロードしました。
LibreOffice_4.2.2_Win_x86.msiをまずインストール。
4.1.4.2は入れたまま上書きインストールです。
4.2.2.1がインストールされました。
途中こんなエラーがでてきましたが、ほかに開いていたアプリを全部閉じて「再試行」をクリックするとそのままインストールが完了しました。
Pythonのバージョンは3.3.3になった
C:\Program Files (x86)\LibreOffice 4\programをみるとpython-core-3.3.3フォルダがありますが、python-core-3.3.0フォルダも残っています。
C:\Program Files (x86)\LibreOffice 4\program\python.exeをコマンドウィンドウで起動してPythonのバージョンを確認します。
C:\Program Files (x86)\LibreOffice 4\program>python -V
Python 3.3.3
Python 3.3.3
Python3.3.3になっています。
SQLiteが使えるかimportしてみましたがLibreOffice4.1.4.2と同様にダメでした。
とくに変更なくPyCharmからLibreOffice(4)PyCharmからLibreOfficeを動かす(オートメーション)で作ったtest.pyも動かすことができました。
PyCharmのInterpreterの表記は3.3.0のままでしたが、PyCharmでFile→Settings→Project Interpreter→Python Interpretersで再度C:\Program Files (x86)\LibreOffice 4\program\python.exeを指定しなおすと3.3.3に変わりました。
参考にしたサイト
Bug 59954 – unable to import sqlite library from libreoffice's embedded python
LibreOffice付属Pythonと同バージョンのSQLiteモジュールをコピーしてもってくればSQLiteが使えるようです。
Releases | Python.org
Pythonダウンロードサイト。
[Solved] Python 3 and Calc (View topic) • Apache OpenOffice Community Forum
LibreOfficeのpython.exeを自分で置き換えるのは難しそうです。
LibreOffice 4.2: focusing on performance and interoperability, and improving the integration with Microsoft Windows | The Document Foundation Blog
LibreOffice4.2に関する記事。LibreOffice4.2のPythonは3.3.3です。
0 件のコメント:
コメントを投稿