序文
最近、運用担当の同僚から、複数のエンタープライズ WeChat オープニングやその他の問題を実装する方法を尋ねられました。Python コードで実装した後、Python 環境と pywin32 モジュールに依存しているため、考慮されているシステムは Windows であるため、実行可能 exe ファイルを生成するのはしたがって、Pyinstaller を使用することを選択します。
Pyinstallerをインストールする
-
Python をダウンロードします。対応するダウンロード アドレス: python3.7
-
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
遭遇する可能性のある問題
- icon アイコンが時間内に更新されません。Windows システムにキャッシュの問題があるためです。この場合は、プロジェクトの名前を変更するだけです。
- 最初の実行後にスペック ファイルを変更した後は、スペック ファイルのバックアップ コピーを作成することをお勧めします。最初のコマンドを再度実行するとスペック ファイルが再生成され、毎回 -n を更新しないと元のファイルが消えてしまうためです。
- exe ファイルの実行が戻らない場合は、コンソールを使用して対応するプログラムに入り、対応するエラーを確認できます。