#概要
pythonのsimplekmlを利用して、csvからkmlファイルを作成するソフトを作成して、それをC#から呼ぶ形のソフトを作成しようとした。
C#からpythonを呼ぶ方法として
.NET (C#)からpythonを呼び出す
などもあるが、実行形式で出力して、引数を付けて呼ぶ方がとりあえず楽だと思ってその方向で進めることにした。
##結論
py2exeは軽量化しつつexe化できる可能性があるが、処理が煩雑になるので利用しないこととした。
仮想環境でpyinstallerを利用するか、pythonnetを利用する方が良い
#pyinstaller
実行形式で出力する方法としては
- pyinstaleller
- py2exe
があるが、とっつきやすそうなpyinstallerから手を付けることにした。
pip install pyinstaller
python -m pyinstaller test.py --onefile
これだけで実行形式で出力できるので、非常に楽なのだが、めちゃくちゃファイルサイズがでかくなって30MBになってしまった。
仮想環境とか作ればもっと軽くなるらしいが、あんまり時間もかけたくないので、後回しにする。
pyinstallerについて詳しく知りたい場合は
【悲報】PyInstallerさん、300MBのexeファイルを吐き出すようになる
ここを参照する事を推奨する。
#py2exe
py2exeならそこまで重くならないような噂だったので、そちらに手を付けることにする
インストールについてはgitからwhlをダウンロードする方法しかないようなので、サクッとインストールする
py2exeをpython 3.5 - 3.7で使う
https://github.com/albertosottile/py2exe/releases
setup.pyを書く必要があると言うのでそこらへんも作成する
py2exeでPythonのスクリプトを実行ファイル(exe)にする【py2exe】
python setup.py py2exe
で実行する
ここらへんからハマり始めるのだが
'bundle_files': 2,
だと出力できるのだが
'bundle_files': 1,
にするとnumpyのサブモジュールが見つからないとか言って出力できない。
じゃあなんで2だと通るんだよ、って話なんだが、2で出力したファイルを実行してみると
SystemError: initialization of numpy.random.mtrand did not return an extension module
とかいってnumpy周りで失敗する。
これについて調べてみると
https://github.com/albertosottile/py2exe/issues/28
なんかライブラリをいじったり、インポート周りで変な回り道をする必要があるみたい
なのでpy2exeは利用しない方がいいだろうと判断した
#締め
まぁとりあえず2時間くらいで調べた内容を15分くらいでまとめたような薄い内容ですが、備忘録ですので、見づらかったらすいません。
とりあえず、現状でもモノは動くので、30MBのまま使ってみて、時間が余れば(余らない)ほかの方法も試してみようかと思います。
以上です。