Ubuntu 18とLabVIEW 2019でPythonNode

Ubuntu 18とLabVIEW 2019でPythonNodeが動くようにする

デフォルトの状態では動かない

Ubuntu18でデフォルトインストールされていたのは、python 2.7(64bit)
LabVIEW 2019のPythonNodeで、OpenPythonSessionでエラーになる

原因

LabVIEW OpenPythonSessionでは、pythonの実行ファイルではなく、
libpython2.7.soというライブラリファイルでPythonの機能を呼び出しており、
このファイルが、/usr/lib/x86_64-linux-gnu/に存在することを期待している、らしい。
しかし、Ubuntu18では、そのフォルダには、libpython2.7.so.1、libpython2.7.so.1.0 は
あるが、肝心のlibpython2.7.soがない。
ちなみに、libpython2.7.so.1は、libpython2.7.so.1.0のシンボリックリンク

対策

対策としては、
以下のように libython2.7.soというシンボリックファイルを作ることで解決できた。

$ cd /usr/lib/x86_64-linux-gnu/
$ sudo ln -s libpython2.7.so.1 libpython2.7.so

libpython2.7.soファイルが作られる。
ちなみに、libpython2.7.so.1の実体は、libpython2.7.so.1.0のシンボリックリンクなので、
最終的に、libpython2.7.soの実体は、libpython2.7.so.1.0ということになります。

libpython2.7.so -> libpython2.7.so.1 -> libpython2.7.so.1.0 (実体)

これで、LabVIEWPythonサンプルを実行すると正常に実行できるようになります。
(サンプルVIの実行時にPythonのバージョンは2.7を選択する)
 LabVIEW Linuxが正式にサポートしているRHEL7/8等でも同じような問題が
発生する可能性があるので、その場合はlibpythonのバージョンを確認してみてください。

余談

なお、
LabVIEW 2019のPythonNodeでは、numpyの配列をサポートしました。
(LabVIEW 2018のPythonNodeではサポートしてなかった!)
最近のPythonのサンプルでは、ほぼnumpyが使われれいるので、ようやくまともに
PythonNodeが使えるようになったのではないかと思います。
ただ、サポートしているPythonのバージョンが2.7と3.6だけなので、せめて3.7には
対応してもらいたいところです。

後日談

Ubuntu20にアップグレードしたら、libpython2.7.soシンボリックリンクファイルが消されてしまったらしく、
実行できなくなっていた。自分で書いたメモを見ながら、再度リンクし直すと、PythonNodeも復活した。
Python3.8がインストールされていたが、PythonNodeがサポートしているのは、3.6。
でもシンボリックリンクを貼り直せば、そこそこ動くのではないかと考えて以下のように強引に3.6.soとしてリンクする。

$ cd /usr/lib/x86_64-linux-gnu/
$ sudo ln -s libpython3.8.so.1 libpython3.6.so

LabVIEWのサンプルで、Pythonのバージョンを3.6を指定すると一応、エラーなく動作はする。
Linuxならではの強引な方法だが、もちろん、サポート対象外なので、いろいろと不都合があるかもしれないので、
利用にあたっては自己責任で。