pyinstaller モジュールは主に、Python コードを直接使用できるように exe プログラムにパッケージ化するために使用され、Python 環境がなくても他のコンピューターで実行できるようにします。
pyinstallerはサードパーティのライブラリであるため、使用する場合は事前にインストールする必要があります
pip install pyinstaller
1. 生成された exe プログラム フォルダーを構成します
(1) 仕様の構成内容がよくわからない場合は、次のコマンドを実行できます。固定テンプレートを生成するためのターミナル
pyinstaller --name myapp main.py # myapp为生成的spec文件名称,main.py为打包的文件
実行後、いくつかのファイルが表示され、dist ファイルとビルド ファイルを直接削除できます。 myapp.spec ファイルを開くと、構成情報が表示されることがわかります。
# -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis( ['main.py','hello.py'], #注:要打包的模块,按照先后顺序运行 pathex=['C:/Users/pythonProject'], #注:要打包的Python源代码的路径列表。 binaries=[], datas=[], #注:要打包的非Python资源(例如图像、配置文件等)列表。 hiddenimports=[''requests], #注:必需的隐藏导入列表,用于告诉PyInstaller找到其他未明确指定的依赖项。 hookspath=[], #注:一个路径列表,其中包含指定要自定义的钩子模块的目录。 hooksconfig={}, #注: runtime_hooks=[], #注:用于在应用程序运行时运行的Python代码文件列表。 excludes=[], #注:不包括在生成的可执行文件中的模块列表 win_no_prefer_redirects=False, #注: win_private_assemblies=False, cipher=block_cipher, #注:用于加密Python字节码的密码。 noarchive=False, ) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) #注:a.pure: 一个布尔值,指示是否生成纯Python字节码。如果为True,则PyInstaller将不包括任何二进制文件或库。
a.zipped_data: OneFile モードのすべての Python スクリプトとリソースを含むタプル。
exe = EXE( pyz, #注:一个PYZ实例,其中包含要打包的所有Python脚本和资源。 a.scripts, #注:应用程序的主Python脚本列表。 [], exclude_binaries=True, name='myapp', #注:生成exe可执行文件的名称 debug=False, #注:一个布尔值,指示是否生成调试版本的可执行文件 bootloader_ignore_signals=False, #注:一个布尔值,指示是否忽略启动加载器的信号。 strip=False, #注:一个布尔值,指示是否对可执行文件进行符号剥离。 upx=True, #注:一个布尔值,指示是否使用UPX压缩可执行文件 console=True, #注:是否开启dos窗口 disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon:'图标.ico' #注:用户生成exe文件的封面,后缀必须是ico格式,转换地址:https://convertio.co/zh/download/88c5806204642c8a1c10e65b1bef9b5886f6d8/ ) coll = COLLECT( exe, #注:你的Python脚本生成的可执行文件路径(通常是与spec文件同名的文件) a.binaries, #注:二进制对象列表,表示其他相关二进制文件的位置以及将它们复制到输出目录的相对路径。例如,如果您的应用程序需要音频或图像文件,则可以使用此参数将其包含在可执行文件中。 a.zipfiles, #注:压缩文件列表,表示应该从zip文件中提取哪些文件并将它们放入输出目录。这对于打包一些必需的库或数据文件非常有用。 a.datas, #注:数据文件列表,这些文件不应被压缩,但应该被复制到输出目录中。例如,这可能包括配置文件、模板文件或其他类型的文本文件。 strip=False, #注:是否从可执行文件和库中去除调试信息。默认情况下为True,这将减小文件大小,但会使得调试更加困难。 upx=True, #注:是否使用UPX来压缩可执行文件和库。默认情况下为False,因为UPX可能会导致某些文件无法正常工作。 upx_exclude=[], #注: name='myapp', #注:打包文件夹名称。 )
(3) 通常、パッケージ化する必要があるモジュールを設定するだけで済みます。pathex により、exe ファイルの名前と、exe が存在するディレクトリの名前が生成されます。設定後、コマンドを直接入力します。梱包用ターミナル内。
pyinstaller myapp.spec
(4) パッケージ化が完了すると、プロジェクトが配置されているディレクトリにある dist ファイルが表示されます。dist ファイルの次のディレクトリがパッケージング フォルダで、その下にあるのがプログラム。フォルダー全体をパッケージ化するため、他のユーザーと共有する場合は、正しく動作させるためにフォルダー全体を送信する必要があることに注意してください。
(5) パッケージ化するモジュールの設定 モジュール間にインポート接続がある場合、最終的に実行するモジュール(メイン)を直接パッケージ化できます。デフォルトでは、main に含まれるインポート (.py サードパーティ ライブラリ) はすべて一緒にパッケージ化されます。 2 つの py モジュールが互いに関係がない場合は、この時点で複数のモジュールをパッケージ化できます。
2. 独立した実行ファイルを生成する設定
(1) 手順は上記と同じで、まずテンプレート
pyinstaller -F main.py
( 2) テンプレートは次のとおりです。スタイルは次のとおりです。フィールドの意味は上記と同じです。
# -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis( ['main.py'], pathex=[], binaries=[], datas=[], hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, ) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE( pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='hello', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, )
(3) 設定完了後、ターミナルでパッケージングコマンドを実行すると、dist ディレクトリに exe ファイルが 1 つだけ存在することがわかります。
pyinstaller myapp.spec
スペック ファイルの構成に加えて、pyinstaller コマンドを使用してスペック ファイルを直接パッケージ化することもできます。ここでは紹介しません。
以上がPython pyinstaller ライブラリをインストールして構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。