【FMI/FMU】最小構成のMBD事例 第2章 その85【PyFMI②】

【FMI/FMU】最小構成のMBD事例 第2章 その85【PyFMI②】 事例
【FMI/FMU】最小構成のMBD事例 第2章 その85【PyFMI②】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

前回はPyFMIの概要について。
JModelicaの一部であること、FMILibraryを内部で使用しているらしいことがわかった。

今回は実際のインストール方法について。
まぁcondaで指定するだけなんだけど。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

PyFMIのインストール方法

太郎くん
太郎くん

まぁPyFMIの概要は分かったから早速インストールをする感じかな。

太郎くん
太郎くん

pipで指定すれば良いのかな?

フクさん
フクさん

pipでも行けるかもしれないが、
FMILibraryやAssimuloの依存関係の解決で失敗し易いんだよね。

太郎くん
太郎くん

え゛。
じゃーどうするの?

フクさん
フクさん

Anacondaを使用している場合はcondaでインストールした方が安全だな。

PyFMIの依存関係あれこれ

太郎くん
太郎くん

condaだと、依存関係の解決が楽なの?

フクさん
フクさん

うん。
特にFMILibraryの依存関係で失敗する人が多いだろう。
あとAssimuloも。

太郎くん
太郎くん

何が原因で失敗するの?

フクさん
フクさん

FMILibraryの方は我々も苦労したようにそもそも64bit用のFMILibraryが準備できてるかって点だね。

フクさん
フクさん

Assimuloの方はさらに厄介で、
sundialsというsolverが必要だったり、GLIMDAというsolverが必余だったり・・・。

太郎くん
太郎くん

あれ?
Assimulo自体がsolverなんだよね?

フクさん
フクさん

そこら辺の内部的な依存関係は分からないが、
Assimulo自体もPython向けのインターフェースだけで、実際はsundialsとGLIMDAがsolver本体なのかもね。

太郎くん
太郎くん

なるほど。
それらの全部のライブラリを自前で用意するのが大変ってことか。

condaでPyFMIのインストール

太郎くん
太郎くん

で、condaだとどうなるの?
やっぱりそこそこ大変?

フクさん
フクさん

いんや、コマンド一発でOKだ。

> conda instal pyfmi
フクさん
フクさん

AnacondaやPythonのVersionによってはパッケージダウンロードチャネルをconda-forgeと明記する場合もある。

> conda install -c conda-forge pyfmi 
フクさん
フクさん

これでFMILibrary、Assimuloやそれらに依存したライブラリの64bitビルド品が一緒にインストールされる。

太郎くん
太郎くん

なんかcondaの方が便利そうだな・・・。
以前いれたpython-can、iso-tpとかもcondaの方が良かったんじゃ・・・。

フクさん
フクさん

python-can、iso-tpはcondaでは管理されてないPythonライブラリだね。
よって、pipでインストールしかなかった
って経緯がある。

太郎くん
太郎くん

あ、そういうことね。
まぁ一般的に使用されるようなライブラリじゃなさそうだもんね。

フクさん
フクさん

それ言ったらPyFMIも「一般的に使用されるようなライブラリじゃない」にはなるが、
今回は運が良かったってところだろう。

太郎くん
太郎くん

インストールで転んじゃうと、このシリーズも話が続かなくなるもんねぇ・・・。

フクさん
フクさん

まぁそれだったらそれでFMILibraryを無理やりPythonから呼ぶとかいろいろやり様はあるが、それを使わないで済んでよかった。

太郎くん
太郎くん

(このフクロウ、なんかヤバイこと口走らなかったか?)

まとめ

フクさん
フクさん

まとめだよ。

  • PyFMIのインスト―ルについてあれこれ。
  • 依存関係がヤバイ。
    • FMILibraryの64bitが必要。
    • Assimuloが依存したsundials、GLIMDAのsolverの64bit品が必要。
  • condaだと依存関係を一撃で解決してくれる。
  • python-canなどはconda管理になっていないなど万能では無い。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました