ホームページ  >  記事  >  バックエンド開発  >  Python スクリプトを実行可能ファイルにパッケージ化するにはどうすればよいですか? (詳細)

Python スクリプトを実行可能ファイルにパッケージ化するにはどうすればよいですか? (詳細)

不言
不言オリジナル
2018-09-27 15:30:515921ブラウズ

この記事では、Python スクリプトを実行可能ファイルにパッケージ化する方法について説明します。 (詳細)、一定の参考値がありますので、困っている方は参考にしていただければ幸いです。

Python は、インタプリタによって解釈および実行されるスクリプト言語です。リリース方法:

  • .py ファイル: オープン ソース プロジェクトの場合、またはソース コードがそれほど重要ではない場合、ソース コードが直接提供され、ユーザーは Python やさまざまなソフトウェアをインストールする必要があります。依存ライブラリ自体。 (これは、Python 公式インストール パッケージが行うことです)

  • .pyc ファイル: 一部の企業または個人は、機密保持またはさまざまな理由により、ソース コードをオペレーターに見られたくない場合があります。 pyc ファイルを使用して公開できます。pyc ファイルは、Python インタープリタによって認識できるバイナリ コードであるため、公開後はクロスプラットフォームになります。ユーザーは、Python の対応するバージョンと依存ライブラリをインストールする必要があります。

  • 実行可能ファイル: プログラマーではないユーザーや初心者ユーザーにとって、Python のインストールを要求され、さらに多数の依存ライブラリを処理しなければならないとしたら、それは大惨事になるでしょう。このようなユーザーにとって、最も簡単な方法は、実行可能ファイルを提供し、その使用方法を伝えることです。さらに厄介なのは、プラットフォーム (Windows、Linux、Mac など) ごとに異なる実行可能ファイルをパッケージ化する必要があることです。

この記事では主に最後の方法を紹介しますが、.py と .pyc はどちらも比較的単純で、Python 自体で処理できます。 Python スクリプトを実行可能ファイルにパッケージ化する方法は数多くありますが、この記事では PyInstaller に焦点を当てており、他の方法は比較と参考のみを目的としています。

コードの凍結

さまざまなパッケージ化ツールの比較は次のとおりです (コードの凍結に関する記事から):

##bbFreezeyesyes はいnoMITnoはいはいはいpy2exeはいnonoはいMITはいはいpyInstallercx_Freezepy2app#はい#はい# ## はい############

PS. その中でも、pyInstaller と cx_Freeze はどちらも優れており、stackoverflow の何人かの人は、cx_Freeze の方が便利だと言って、cx_Freeze の使用を提案しています。 pkg_resources の新しいバージョンは pyInstaller でサポートされているようです。

PyInstaller のインストール

ネットワークが比較的安定しており、pip ソース アドレスをスムーズに使用できるユーザーの場合は、次のコマンドを実行するだけです:

pip install pyinstaller

通常は、ソース コード パッケージをダウンロードし、パッケージ ディレクトリに移動して次のコマンドを実行します (setuptools をインストールする必要があります):

python setup.py install

インストール後、インストールが成功したかどうかを確認してください:

pyinstaller --version

インストールが成功したら、次のコマンドを使用できます:

  • pyinstaller: 実行ファイルをパッケージ化するためのメインコマンドで、詳しい使い方は後述します。

  • pyi-archive_viewer : 実行可能パッケージ内のファイルリストを表示します。

  • pyi-bindepend : 実行可能ファイルが依存する動的ライブラリ (.so または .dll ファイル) を表示します

  • pyi-... : 待ってください。

PyInstaller

pyinstaller の構文を使用します:

pyinstaller [options] script [script ...] | specfile

最も単純な使用法では、myscript.py と同じディレクトリでコマンドを実行します。

pyinstaller mycript.py

すると、2 つの新しいディレクトリ build と dist が作成されたことがわかります。 dist の下に追加 ファイルは公開できる実行可能ファイルです。上記のコマンドの場合、dist ディレクトリの下にダイナミック ライブラリ ファイルや myscrip 実行可能ファイルを含む多数のファイルが見つかります。これは面倒に感じることがあります。公開する前に、すべてを dist の下にパッケージ化する必要があります。動的ライブラリが失われると、実行されなくなります。幸いなことに、pyInstaller はシングル ファイル モードをサポートしています。実行する必要があるのは、次のとおりです:

pyinstaller -F mycript.py

dist の下には実行可能ファイルが 1 つだけあることがわかります。この 1 つのファイルは公開でき、使用しているオペレーティング システムと同様のシステムで実行できます。

もちろん、pyinstaller には、pyInstaller の実行プロセスをデバッグおよび理解するための -d オプションなどの一般的なオプションを含むさまざまなオプションもあります。また、さまざまなプラットフォーム用のオプションもいくつかあります。具体的な使用方法については、PyInstaller 公式 WIKI にアクセスしてください。

pyInstaller コマンドを実行すると、スクリプトと同じディレクトリに .spec ファイルが生成されます。このファイルは、pyinstaller にすべてのスクリプトの処理方法を指示します。 . には、コマンド オプションも含まれます。通常、このファイルに注意を払う必要はありません。データ ファイルをパッケージ化する必要がある場合、またはパッケージ化されたバイナリに Python ランタイム オプションを追加する必要がある場合 (高度なパッケージ化オプションなど)、.spec を手動で編集する必要があります。 ### ファイル。 .spec ファイルを作成するには:

pyi-makespec options script [script ...]

を使用できます。手動で編集した .spec ファイルの場合は、次のコマンドのいずれかを使用できます:

pyinstaller specfile
pyi-build specfile

PyInstaller の原理の紹介

PyInstaller は、実際に Python パーサーと独自のスクリプトを実行可能ファイルにパッケージ化し、実際のマシン コードにコンパイルします。実行可能ファイルにパッケージ化することで作業効率が向上するとは期待しないでください。逆に、作業効率が低下する可能性があります。利点は、Python やスクリプトが依存するライブラリをインストールする必要がないことです。ランナーズマシン。 Linux オペレーティング システムでは、主に

binutil ツール パッケージの ldd および objdump コマンドを使用します。

PyInstaller は指定したスクリプトを入力し、まずそのスクリプトが依存する他のスクリプトを分析し、次に Python パーサーを含むすべての関連スクリプトを検索、コピー、収集し、これらのファイルをディレクトリに配置します。ダウンロードするか、またはそれを実行可能ファイルにパッケージ化します。

出力フォルダー全体のファイル、または生成された実行可能ファイルを直接公開できます。アプリケーションが自己完結型であり、直接実行する前に他のパッケージや特定のバージョンの Python をインストールする必要がないことをユーザーに伝えるだけで済みます。

PyInstaller でパッケージ化された実行可能ファイルは、パッケージング マシン システムと同じ環境でのみ使用できることに注意してください。つまり、移植性がないため、別のシステムで実行する必要がある場合は、そのプラットフォーム用にパッケージ化する必要があります。

解決策 Windows Linux OS X Python 3 ライセンス ワンファイルモード Zipfile インポート Eggs pkg_resources サポート
#no no
はい はい はい no GPL はい no はい いいえ
yes yes yes yes PSF no yes yes no
no いいえ はい#MIT いいえ#はい

以上がPython スクリプトを実行可能ファイルにパッケージ化するにはどうすればよいですか? (詳細)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。