バックナンバーはこちら。
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管理になっていないなど万能では無い。
バックナンバーはこちら。
コメント