2016/12/20(火) [n年前の日記]
#1 [windows][python] LibreOfficeが落ちる原因が分かった
Windows10 x64 + LibreOffice 5.2.3.3 を使ってる状況で、「辞書」をインストールすると LibreOffice がやたらめったら落ちる状態になってしまう原因が分かった。たぶん。
環境変数の中に、
正直、「そこかよ!?」って感じ…。
環境変数の中に、
PYTHONPATH=C:\Python\Python27\Lib\site-packagesという定義があると LibreOffice が落ちまくるようで。
正直、「そこかよ!?」って感じ…。
◎ 何が起きていたか。 :
ここから先は想像なので、間違ってるかもしれんけど。たぶんこういうことが起きてたのだと思う。たぶん。自信無いけど。
LibreOffice は、 _UNO(Universal Network Objects) という仕組みを用意することで、拡張機能等の追加ができるように作ってある。そして、「辞書」を用いるスペルチェック機能(拡張機能)も、UNOを使って提供されている。更に、このUNOとやらは、Java だの Python だの Tcl だのを使って実際の処理をしてるっぽい。
で。自分のメインPC上では Python 2.7.12 をインストールして色々アレコレ試してた関係で、何かの拍子に PYTHONPATH という環境変数を設定してしまっていた。
そして LibreOffice は、LibreOffice内に入ってるPythonを使ってUNO関係の何かしらの処理をしようとした際、PYTHONPATH という環境変数の存在をチェックして、もし存在するようならそっちにライブラリその他が入ってるものとして処理を進めようとしたのだろうと。しかしWindowsのシステム側で持ってるPythonインストールフォルダには LibreOffice 用のアレコレなんて入ってるわけがないから、結果、異常動作に繋がった。
ということじゃないのかなと。たぶん。自信無いけど。
LibreOffice は、 _UNO(Universal Network Objects) という仕組みを用意することで、拡張機能等の追加ができるように作ってある。そして、「辞書」を用いるスペルチェック機能(拡張機能)も、UNOを使って提供されている。更に、このUNOとやらは、Java だの Python だの Tcl だのを使って実際の処理をしてるっぽい。
で。自分のメインPC上では Python 2.7.12 をインストールして色々アレコレ試してた関係で、何かの拍子に PYTHONPATH という環境変数を設定してしまっていた。
そして LibreOffice は、LibreOffice内に入ってるPythonを使ってUNO関係の何かしらの処理をしようとした際、PYTHONPATH という環境変数の存在をチェックして、もし存在するようならそっちにライブラリその他が入ってるものとして処理を進めようとしたのだろうと。しかしWindowsのシステム側で持ってるPythonインストールフォルダには LibreOffice 用のアレコレなんて入ってるわけがないから、結果、異常動作に繋がった。
ということじゃないのかなと。たぶん。自信無いけど。
◎ PYTHONPATHはどう扱えばいいのか。 :
どうもよく分からないのだけど、結局のところ PYTHONPATH は指定したほうがいいのかどうか。ググってみても、一般的には指定する必要はないと解説してる記事もあれば、指定することでライブラリの在処が分かるようになってトラブルが解決したと解説してる記事もあって。
それとは別に。この場合、LibreOffice はバグを持っていたと捉えるべきなのか、それともこういう仕様なのだと捉えるべきなのか。どっちなんだろうなと。
OSにPythonをインストールしてあって PYTHONPATH まで指定しちゃってる場合、LibreOfficeの拡張機能は一切使えませんよ、そういう仕様ですよ、という扱いでいいのか。それともその場合 LibreOffice が持ってる Python 側で PYTHONPATH を無視、もしくは既存のPYTHONPATH に新たなパスを追加して動作するように対策しておくのが正解なのか。
自分のレベルでは、何が正解なのか判断できないなと。
それとは別に。この場合、LibreOffice はバグを持っていたと捉えるべきなのか、それともこういう仕様なのだと捉えるべきなのか。どっちなんだろうなと。
OSにPythonをインストールしてあって PYTHONPATH まで指定しちゃってる場合、LibreOfficeの拡張機能は一切使えませんよ、そういう仕様ですよ、という扱いでいいのか。それともその場合 LibreOffice が持ってる Python 側で PYTHONPATH を無視、もしくは既存のPYTHONPATH に新たなパスを追加して動作するように対策しておくのが正解なのか。
自分のレベルでは、何が正解なのか判断できないなと。
◎ まとめ。 :
何にせよ現状では、OSにPythonをインストールしてあって、かつ、LibreOffice を使う場合、もしかするとLibreOffice の拡張機能の類が動かないかもしれないので注意しようね、という話になるのだろう…。
しかし変だな…。HDD内の記録を探したら、少なくとも去年の中頃には PYTHONPATH を指定してたみたいなんだけど。今までずっと LibreOffice は動いてたんだけどな…。どの時期から、こんなことに…。
でもまあ、どこが原因で落ちていたのか分かったので、これでようやくスッキリした。まさかそんなところに原因があったとは…。
しかし変だな…。HDD内の記録を探したら、少なくとも去年の中頃には PYTHONPATH を指定してたみたいなんだけど。今までずっと LibreOffice は動いてたんだけどな…。どの時期から、こんなことに…。
でもまあ、どこが原因で落ちていたのか分かったので、これでようやくスッキリした。まさかそんなところに原因があったとは…。
[ ツッコむ ]
以上、1 日分です。