PYTHON3=OFF 時に Python スクリプトの実行に失敗する

Ubuntu18.04 + ROS Melodic の環境で、Choreonoid (github版)を CMakeオプション USE_PYTHON3=OFF でビルドすると、下記の警告メッセージが出て python スクリプトの読み込みに失敗するのでご報告します。

$ catkin config --cmake-args -DBUILD_CHOREONOID_EXECUTABLE=OFF -DUSE_PYTHON3=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_AGX_DYNAMICS_PLUGIN=ON -DBUILD_AGX_BODYEXTENSION_PLUGIN=ON -DBUILD
_COMPETITION_PLUGIN=ON -DENABLE_CORBA=ON -DBUILD_CORBA_PLUGIN=ON -DBUILD_MULTICOPTER_PLUGIN=ON -DBUILD_MULTICOPTER_SAMPLES=ON -DBUILD_SCENE_EFFECTS_PLUGIN=ON -DBUILD_WRS2018=ON

Choreonoidを実行、

$ rosrun choreonoid_ros choreonoid <project.py>

以下、メッセージビューからの抜粋です。

<省略>
PoseSeqプラグインが読み込まれました.
警告:Failed to export the libpython symbols. The system may not be able to load binary Python modules.
Pythonプラグインが読み込まれました.
PythonSimScriptプラグインが読み込まれました.
ROSプラグインが読み込まれました.
<省略>
Pythonスクリプト "<project.py>" を実行中...
警告:Pythonスクリプトの実行に失敗しました.
ImportError: ImportError:
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

Original error was: /usr/lib/python2.7/dist-packages/numpy/core/multiarray.x86_64-linux-gnu.so: undefined symbol: PyExc_SystemError
<省略>

なお、-DUSE_PYTHON3=OFF オプション無しでビルドした場合は python3 でビルドされますが、Python スクリプトの実行等は問題ありません。

ご確認いただければ幸いです。よろしくお願いします。

ご報告ありがとうございます。

こちらでも再現できました。
現時点で分かったこととして、同じような環境でもこの症状が出る場合と出ない場合があって、どうもPythonPlugin、PythonSimScriptPluginのいずれかがROSPluginより前に検出されると出ませんが、いずれも後に検出されると(ROSPluginの方が先に検出されると)出るようです。
検出順は現状ではファイルシステムの内部的な並びで決まるので、たまたまそうなったりならなかったりします。

それで、テストも兼ねた応急処置として、

$ CNOID_EXPORT_PLUGIN_EXTERNAL_SYMBOLS=1 rosrun choreonoid_ros choreonoid <project.py>

としてみていただけますでしょうか。

この場合、警告は出ますが、その後のPythonスクリプトの実行には成功すると見込んでいます。この結果をお知らせいただければ幸いです。

その上で、今後根本的な問題解決も試みたいと思います。

この症状の根本的な原因が分かりまして、修正しました。

これでそちらの環境でも症状が改善されるか、ご確認いただけますでしょうか。

最新版により改善されていることを確認しました。
(先の環境が手元になかったため確認が遅くなりました)

ご対応ありがとうございました。

ご確認いただきありがとうございました。