2017-10-18 27 views
2

私はWindows 7+を実行しているマシンにPythonコードを配布したいと思います。これは、メインとcprofiles_lmfit.pyという2つの.pyファイルと、GUIを記述するファイルcprofiles.uiと、ドキュメントの.pdfで構成されています。pyinstallerでPythonをコンパイルするのに助けが必要

Iは、ハード時間(例えばbuild a .exe for Windows from a python 3 script importing theano with pyinstaller参照)を有していたが、最終的に、コマンドラインでpyInstallerのを使用して適切なバイナリを作った:

pyinstaller --noupx --onefile --add-data="cprofiles.ui;." cprofiles_lmfit.py 

上記のリンクに記載theanoモジュールに問題の横、バイナリーまだいくつかの問題があります:

  • .exeは220 MBです。私はサイズを小さくしたいと思います。

  • .exeを実行すると、コンソールが開き、20秒間待ってからGUIを開きます。 GUIが開かれたら、コンソールを閉じるとGUIが終了します。このコンソールを避けて〜20秒をスキップします。

  • uiファイルはexeと一緒に(同じディレクトリに)配布する必要があります。私はこれが「データの追加」オプションの場合ではないはずだと思っていました。私はそれを含めたいと思います。

  • python環境の 'Library/plugin'ディレクトリの 'platforms'ディレクトリもexeファイルとともに配布する必要があります。それ以外の場合、exe 'このアプリケーションはqtプラットフォームプラグインウィンドウが見つからないため起動できませんでしたが、実行時にエラーメッセージが表示されます(ただし、pyinstallerがビルドするとエラーメッセージは表示されません)。私はこの「プラットフォーム」のゲームを取り除きたいと思う。

あなたはこれらのポイントに対処する方法を知っていますか?


更新nov 28、2017: 誰もいませんか?あなたがこれらの点の一つに貢献できるなら、私に手がかりを与えてください。

答えて

1

私はあなたにとってより良い解決策があると思います:pyinstallerと一緒にnsisを使用してください。ここで

詳細で回答:それは完全なPython環境が含まれているため

  1. ファイルには、その大きさです。私はあなたがそれについて多くのことをすることはできないと思いますが、少ないファイルを含み、あなたのコードで少ないパッケージを使用する仮想環境を作ることを除いては、
  2. --onefileオプションを選択したため、exeを実行するのに時間がかかります。その結果、exeを解凍して一時ディレクトリに保存し、スクリプトを実行します。 --onefileを使用するとき、実際には実行可能ファイルではなく、解凍してから起動するzipファイルです。より良いオプションは、
  3. (および4.)です。 --onefileオプションを使用する代わりに、通常pyinstallerでパッケージ化し、その上にnsisというスクリプトを作成してください。こうすることで、インストーラを実行することができます。このインストーラは、nsisスクリプト(pyinstallerによって作成されたすべてのファイルを含む)に格納されたすべてのファイルをパッケージ化します。 .exeへのショートカットも作成する素晴らしいセットアップインターフェイスがあります。
関連する問題