web-dev-qa-db-ja.com

PyQtスクリプト(.py)をWindows(.exe)および/またはLinux用の単一のスタンドアロン実行可能ファイルにコンパイルするにはどうすればよいですか?

私はPyQtをいじり始め、pyqtホワイトペーパーサンプルアプリから「美しい」スクリプトを作成しました( Pastebin

WindowsとLinuxで完全に動作します(qt環境は両方に既にインストールされています)。

今、私の質問は次のとおりです:コンパイルされているため(少なくとも純粋な古いC++ベースのQt)Qtを使用しようとしているので、Windowsで実行するためにいくつかの.exeファイル、またはLinuxのスタンドアロン実行可能ファイルをどのようにコンパイルできますか?.

要点は、ソースから解釈するのではなく、速度と移植性のためにプログラムをコンパイルしたいということです。これは、任意のマシンで以前のセットアップを必要とします。たとえば、目標の1つは、プログラマーではない同僚に小さなGUIスクリプトを電子メールで送信することです。

42
heltonbiker

1つのスタンドアロン実行可能ファイルを完全に作成する場合は、これを試してください: http://www.pyinstaller.org/ 私の経験では、cx_freezeやpy2exeよりも1つのスタンドアロン実行可能ファイルを作成する方が良いと感じています。使いやすい(完全なドキュメントはサイトで入手可能)。

更新:@SoursopTreeと@LectureMakerからの最新情報として、pythonバージョン3.3-3.6をサポートするようになりました。

更新:pass-onefile引数を完全にスタンドアロンの.exeを作成する場合。例では:

pyinstaller.exe --onefile --windowed app.py

更新:ライブラリの作成者がクロスプラットフォームのデスクトップアプリを作成できると主張している別の興味深いライブラリ。試す価値はあります https://build-system.fman.io/

40
Yuda Prawira

これに何週間も費やし、すべての代替手段(PyInstaller、py2exe、cx_freeze、...)を試した後、独自のライブラリを作成しました: https://build-system.fman.io/ 。 PyInstallerに基づいていますが、多くの共通の問題点を解決します。また、Windows、Mac、Linuxでネイティブインストーラーを作成できます。

14

cx_freeze をチェックアウトすることをお勧めします。 「クロスプラットフォームであり、Python自体が動作するプラットフォームで動作するはずです。]」実行可能ファイルを作成すると主張しています。

私はPyQtを使用する moneyGur パッケージを探索する際にそれに出会いました。 moneyguru.exeファイルをWindows XPシステムにダウンロードして実行し、Python 3.2。

here からhgリポジトリのクローンを作成して、それがどのように行われたかを確認できます。

4
Don O'Donnell

コンパイルされているためQtを使用しようとしているので

Pythonを使用して、この利点を無効にします。他の回答では、ユーザーにインストールを要求せずにPythonコードを配布するためのオプションを紹介しています。Python自分自身、Pythonインタープリター言語を目的としているため、これらの各オプションには欠点があります(例:速度、プログラムサイズ、互換性など)。

他の2つのオプションは次のとおりです。

  1. Pythonの解釈された性質を受け入れてください:プログラムを共有している人にinstall Pythonおよび依存関係。このプロセスを大幅に簡素化できます。たとえばLinuxでは、パッケージマネージャーを使用します。
  2. プログラムをC++で記述します。そうすることで、単一のネイティブ実行可能ファイルを本当にコンパイルできます。これは残念ながらPythonをドロップすることを意味しますが、C++のようなあまり美しくない言語でコードを書く人がいるのには理由があります。
1
Cameron Lee

私はpyinstallerを使用しています

pip install pyinstaller

知りませんが、pyinstallerはsip.pydを追加しません。したがって、PyQt5\sip.pydが必要です。 Nice windows style qwindowvistastyle.dllをお勧めします。

build.cmdとしてファイルを作成:

pyinstaller --onefile --clean ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\sip.pyd;PyQt5" ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\Qt\plugins\styles\qwindowsvistastyle.dll;PyQt5\Qt\plugins\styles" ^
    .\main.py

^-コマンドファイルの新しい行(.cmd、.bat)

0
Quazer

Py2EXEという名前のモジュールがあり、これはあなたがやりたいことを正確に行います。スクリプトを.exeファイルに変換して、Windowsで実行します。 Linuxについてはわかりませんが、どこかにモジュールがあると思います。 py2exe.com

0
Matt Habel