Python スクリプトを実行可能な exe プログラムに簡単に変換する Nanny スタイルの Pyinstaller チュートリアル

序文

最近、運用担当の同僚から、複数のエンタープライズ WeChat オープニングやその他の問題を実装する方法を尋ねられました。Python コードで実装した後、Python 環境と pywin32 モジュールに依存しているため、考慮されているシステムは Windows であるため、実行可能 exe ファイルを生成するのはしたがって、Pyinstaller を使用することを選択します。

Pyinstallerをインストールする

  1. Python をダウンロードします。対応するダウンロード アドレス: python3.7

  2. Pyinstaller モジュールをインストールする

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

-i パラメータは、pip ソースの切り替えの問題を解決します。現在選択されているのは、清華大学の pypi ソースです。さらに詳しく知りたい場合は、Python を参照して pip ソースを国内のソースに変更できます。

Pyinstallerの共通パラメータの説明

パラメータ 説明する 述べる
-F -onefile は、exe 実行可能プログラムを生成するために単一のファイルにパッケージ化されます。 コードが複雑で複数の py ファイルが含まれる場合、設定ファイルが要件を満たせなかったり、操作が面倒になったりするため、使用はお勧めできません。
-D -onedir は複数のファイルをパッケージ化し、dist ディレクトリに多数の依存関係ファイルと exe ファイルを生成します。 主に使用することをお勧めします
-私 -icon は、exe プログラムのアイコンを生成します。 各種画像変換icoサイト
-p -path はインポート パスを設定します。Windows ではセミコロンを使用し、Linux ではコロンを使用します。 複数の py ファイルをインポートする場合は、パスを指定する必要があります。また、Pyinstaller がパッケージを見つけられない場合は、インポートを指定するか、インポート パスを設定する必要があります。
-n -name プロジェクト名 (省略した場合はファイル名)
–データの追加 データファイルの追加 使用例 --add-data=".\xxxx.xx;." の場合、セミコロンと があることに注意してください。

栗をあげる

pyinstaller.exe -i .\w.ico -w .\testmain.py .\pywinhandle.py -n customizeProject --add-data=".\config.json;." -p C:\xampp7\htdocs\launcher\src;

このとき、下図に示すように、dist、build ディレクトリ、spec ファイルが生成されますが、具体的な exe ファイルは dist ディレクトリ内にあります。
ここに画像の説明を挿入します

スペックファイルの説明

このファイルは上記コマンド実行後に生成される docker-compose.yml に似ており、プロジェクトを解決するために関連するコマンドやパラメータを入力する必要がなく、高速なコンパイルを実現します。

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['testmain.py', 'pywinhandle.py'],  
    pathex=['C:\\xampp7\\htdocs\\launcher\\src'], # 路径
    binaries=[],
    datas=[('.\\config.json', '.')],  # --add-data 格式为 ('.\\config.json', '.')
    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,
    [],
    exclude_binaries=True,
    name='customizeProject', # -n 名称
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False, 
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon=['w.ico'], # -i 
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='customizeProject', # -n 名称
)

このファイルを後で変更し、次のコマンドを実行できます (上記のコマンドと同等)。

pyinstaller.exe .\customizeProject.spec

遭遇する可能性のある問題

  1. icon アイコンが時間内に更新されません。Windows システムにキャッシュの問題があるためです。この場合は、プロジェクトの名前を変更するだけです。
  2. 最初の実行後にスペック ファイルを変更した後は、スペック ファイルのバックアップ コピーを作成することをお勧めします。最初のコマンドを再度実行するとスペック ファイルが再生成され、毎回 -n を更新しないと元のファイルが消えてしまうためです。
  3. exe ファイルの実行が戻らない場合は、コンソールを使用して対応するプログラムに入り、対応するエラーを確認できます。

おすすめ

転載: blog.csdn.net/weixin_43832080/article/details/127800659