前の関連記事:linuxBean14.04(159)unohelper.ImplementationHelper()をデバッガにかける
sys.executableはAnacondaのインタープリターのパスが返ってくる
sys.executableを実行するとLibreOfficeのバンドルPythonではなく、Anacondaのインタープリターへのパスが返ってきます。
In [1]:
import sys
sys.executable
Out[1]:
In [2]:
sys.version
Out[2]:
sys.versionもAnacondaのインタープリターを指しています。
わざわざLibreOfficeのバンドルPythonがインタープリターになるように設定したはずなので、どうも納得いかないので、さらに調べてみました。
In [3]:
sys.path
Out[3]:
PYTHONPATHはLibreOfficeのバンドルPythonのものを示しています。
In [4]:
sys.argv[0]
Out[4]:
sys.argv[0]は実行しているスクリプトの名前を返すので、参考にはなりませんでした。
一体sys.executableは何を参照にしているのかソースを読もうとしましたが、LibreOffice5(34)LibreOffice5.2のバンドルPythonで利用可能なモジュール一覧で確認したように、sysモジュールはビルトインモジュールなのでコンパイル前のソースをさがさないといけないのでsysモジュールのソースを読むのは断念しました。
linux - Mismatch between sys.executable and sys.version in Python - Stack Overflow
ここにsys.executableは環境変数PATHで最初に見つかったインタープリターを返すとここに書いてありました。
ここにsys.executableは環境変数PATHで最初に見つかったインタープリターを返すとここに書いてありました。
In [5]:
import os
os.path.expandvars("$PATH")
Out[5]:
環境変数PATHを確認するとたしかに、LibreOfficeのバンドルPythonよりもAnacondaのインタープリターへのパスのほうが先に来ています。
ということは、linuxBean14.04(115)pythonコマンドをpipコマンドとともに切り替えるで設定したスクリプトをいじれば解決しそうです、、、
と、思いましたけどよく考えたらJupyter Notebookの起動は、/opt/libreoffice5.2/program/python ~/anaconda3/envs/py35/bin/jupyter notebookでやっているので環境変数は設定していませんので、これを起動するシェルでPATHを変更しても解決しませんでした。
結局いまのところJupyter Notebookがどこで環境変数PATHを設定しているのか、インタープリターが実際はどれなのか、はわかりません。
と、思いましたけどよく考えたらJupyter Notebookの起動は、/opt/libreoffice5.2/program/python ~/anaconda3/envs/py35/bin/jupyter notebookでやっているので環境変数は設定していませんので、これを起動するシェルでPATHを変更しても解決しませんでした。
結局いまのところJupyter Notebookがどこで環境変数PATHを設定しているのか、インタープリターが実際はどれなのか、はわかりません。
参考にしたサイト
linux - Mismatch between sys.executable and sys.version in Python - Stack Overflow
sys.executableの戻り値は環境変数PATHを参照にしているようです。
0 件のコメント:
コメントを投稿