質問: Pythonで制作したプログラムをelectronでパッケージ化して配布できるようにしたいです。 ただネットの記事を見ると配布先のPCにPythonやモジュールがインストールされていないと使用できないと書いてあります。 一般の方でも簡単にインストールできるような感じにしたいのですが、electronアプリ内にPythonも最初から入っている状態で配布する事は可能なのでしょうか? もしくは展開時にPythonを自動的にインストールできる形にできたりする事は可能ですか? できるだけ、配布先の環境を汚さない形にしたいです。 eel pyinstallerを組み合わせてPythonコードをバイナリファイルにする方法もあるみたいですが、そんなことが可能なのか気になります。
回答: コメントで紹介した記事3つで出来ているようです。だいたい2種類の方法になるでしょう。 **virtualenvで分離独立したPython環境を作成し、そのフォルダ全体を配布する** How can I bundle Python 3.x to my Electron App that uses ReactJs? > > You can bundle everthing using. Innosetup. > > You can use Standalone - Portable Winpython. > > > 回答が承認済みになっているので、上記で解決したものと思われます。 `Portable Winpython`のリンク先を読むと、おそらく`virtualenv`で1つのフォルダ配下に分離独立したPython環境を作成しているものと思われます。 色々と使い勝手が良くなるようにサポートするプログラムも同梱されているようですが。 そしてそれ全体とElectron Applicationを`Innosetup`でまとめてインストーラにしているのでしょう。 **PythonプログラムをPyInstallerでコマンド化してElectron Applicationに含める** fyears/electron-python-example Electron + Pythonでクロスプラットフォーム開発 偶々なのかどちらかが相手を参考にしたのか、`ZeroMQ(zerorpc)`という仕組みでElectron ApplicationとPythonプログラムが通信・連携しているようです。 ただしそれは今回の質問とは直接は関係無くて、肝となるのはPythonプログラムをPyInstallerでコマンド化している部分でしょう。 どうも結局こちらも`virtualenv`を使っているようですが、それは`ZeroMQ`がPython 2.7で動作し、Pythonアプリは3.xで作りたいからのようです。 こちらはElectronでPython部分もあわせてパッケージ化していますね。 探せばもっと別の方法や上記の中でも組み合わせを変えるとかあるでしょうが、類似の内容のバリエーションになりそうです。 出来上がるPythonプログラムや配布するファイルのサイズや数の多寡と、使えるPythonの版数の問題といったもののトレードオフになるでしょう。 (PyInstallerは今のところ3.8では使えない(公式には3.6,実績で3.7?):cx_Freezeの最新版は3.8が使えるよう)