PyInstallerを使用してWindows用のpython3およびPyQT5でプロジェクトをビルドする

この記事を書いた理由は、「pyqt5を使用してプロジェクトをビルドする方法」、「機能しない理由」、「選択するツール」など、そのようなコンテンツを使用する初心者にとって絶えず生じる質問です。 今日は、苦労せずにプロジェクトを収集し、タンバリンで踊る方法を学びます。



どういうわけか、小さなデスクトップアプリケーションを作成する必要がありました。 Pythonは、私の問題を解決するのに理想的であったため、開発用のプログラミング言語として選ばれました。 標準のPythonライブラリにはすでにtkinterライブラリが含まれており、GUIを作成できます。 しかし、tkinterの問題は、このライブラリにほとんど注意が払われておらず、インターネットでコース、書籍、FAQを見つけるのがかなり難しいことです。 したがって、PyQT5ライブラリの形式でpythonプログラミング言語にバインドされた、より強力で最新の機能的なQtライブラリを使用することが決定されました。 PyQTの詳細については、 こちらをご覧ください 。 例として、コードを使用します。


#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QIcon class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 220) self.setWindowTitle('Icon') self.setWindowIcon(QIcon('web.png')) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) 

多かれ少なかれ経験豊富な開発者であれば、インタープリターなしではpythonコードを実行できないことを理解しています。 そして、すべてのユーザーにプログラムを使用する機会を提供したいと思います。 ここで、特別なライブラリが私たちの助けとなり、通常のアプリケーションのように問題なく実行できる.exeでプロジェクトを収集することができます。


これを可能にする多数のライブラリがありますが、中でも最も人気のあるものは、cx_Freeze、py2exe、nuitka、PyInstallerなどです。それぞれについて多くのことが書かれています。 しかし、これらのソリューションの多くは、事前定義されたインタープリターとpyqt5を備えたコンピューターでのみコードを実行できることを言わなければなりません。 ユーザーがわざわざ追加のパッケージやプログラムをインストールすることはないと思います。 開発環境とユーザーでプログラムを実行することは同じではないことを理解してほしい。 また、各ソリューションには独自の問題があったことにも注意する必要があります。1つは開始せず、もう1つは開始できないものを収集し、3つ目は何もしないことを拒否しました。


タンバリンと活発なグーグルでの長いダンスの後、私はまだpyinstallerを使用してプロジェクトを完全に機能するアプリケーションに組み立てることができました。


Pyinstallerについて少し


Pyinstallerは、Pythonアプリケーションとすべての依存関係を1つのパッケージに収集します。 ユーザーは、Pythonインタープリターまたはモジュールをインストールせずにアプリケーションを実行できます。 Pyinstallerは、python 2.7およびpython 3.3以降、およびnumpy、PyQt、Django、wxPythonなどのライブラリをサポートしています。


Pyinstallerは、Windows、Mac OS X、およびLinuxでテストされました。 ただし、これはクロスプラットフォームコンパイラではありません。Windows用のアプリケーションを作成するには、Windowsで実行します。 Linux用のアプリケーションを作成するには、Linuxなどで実行します。


PyInstallerはAIX、Solaris、およびFreeBSDで正常に使用されていますが、テストは行われていません。


PyInstallerの詳細については、 ドキュメントをご覧ください。


さらに、ビルド後、アプリケーションの重量はわずか約15 mbでした。 ちなみに、これはpyinstallerの利点です。すべてを連続して収集するのではなく、必要なものだけを収集するからです。 同様のライブラリは、200〜300 MBの結果を生成しました。


組み立てを始める


アセンブリを進める前に、必要なライブラリ、つまりpywin32とpyinstaller自体をインストールする必要があります。


 pip install pypiwin32 pip install pyinstaller 

すべてが正常であることを確認するには、次のコマンドを入力します。


 pyinstaller --version 

pyinstallerのバージョンが表示されるはずです。 すべてが正しく設定されている場合は、次に進みます。


プロジェクトフォルダーでcmdを実行し、次を入力します。


  pyinstaller myscript.py 

実際、これはプロジェクトを組み立てる最も簡単なチームです。
pyinstallerコマンドの構文は次のとおりです。


pyinstaller [オプション]スクリプト[スクリプト...] | specfile


最も一般的に使用されるオプション:


--onefile-1つのファイルへのアセンブリ、つまり .dllファイルは書き込まれません。
--windowed-アプリケーションが起動すると、コンソールが表示されます。
--noconsole-アプリケーションの起動時に、コンソールは表示されません。
--icon = app.ico-ウィンドウにアイコンを追加します。
--paths-pyinstallerの場合、必要なファイルへのパスを手動で登録する機能
それらを見つけることができません(たとえば:--paths D:\ python35 \ Lib \ site-packages \ PyQt5 \ Qt \ bin)


PyInstallerはmyscript.pyファイルを解析し、次のことを行います。


  1. スクリプトと同じフォルダーにmyscript.specファイルを書き込みます。
  2. スクリプトと同じフォルダーにビルドフォルダーを作成します。
  3. いくつかのログと作業ファイルをビルドフォルダーに書き込みます。
  4. スクリプトと同じフォルダーにdistフォルダーを作成します。
  5. 実行可能ファイルをdistフォルダーに書き込みます。

その結果、チームは次のようになります。


 pyinstaller --onefile --icon=name.ico --noconsole myscript.py 

プログラムを実行すると、distとbuildの2つのフォルダーが見つかります。 実際には、distフォルダーにアプリケーションがあります。 その後、ビルドフォルダーを安全に削除できますが、アプリケーションのパフォーマンスには影響しません。


ご清聴ありがとうございました。 この記事がお役に立てば幸いです。



Source: https://habr.com/ru/post/J325626/


All Articles