web-dev-qa-db-ja.com

PyInstallerで.specを指定して--onefileを使用する

.specファイルを使用してPyInstallerを使用してプログラムを「コンパイル」しています。プログラムに追加のファイルを含める必要があるため、.specファイルを使用しています。しようとするとPyInstaller --onefile Prog.spec、それはまだ私が期待するように単一のファイルを作成するのではなく、distにフォルダーを作成し、すべてのファイルを分離します。私が行った場合 PyInstaller --onefile Prog.pyその後、distに単一の.exeファイルを作成します。 .specファイルを使用するときに特別に行う必要があることはありますか?

8
TheStrangeQuark

スペックファイルを編集する代わりに、コマンドラインで追加のファイルを追加できます。

pyinstaller --onefile --add-data <SRC;DEST or SRC:DEST> yourfile.py

それ以外の場合は、specファイルに収集ステップがないことを確認してください。

「1ファイルモードでは、COLLECTの呼び出しはなく、EXEインスタンスはすべてのスクリプト、モジュール、およびバイナリを受け取ります。」

コマンドラインフラグの詳細については、https://pyinstaller.readthedocs.io/en/stable/usage.html を参照してください。

また、問題が解決しない場合は、いくつかの洞察が得られる場合があります: PyInstallerでのデータファイルのバンドル(--onefile)

6
The4thIceman

使用する pyi-makespec --onefile yourprogram.pyは、onefileモードのサンプル仕様ファイルを生成します。

https://pythonhosted.org/PyInstaller/man/pyi-makespec.html


COLLECT呼び出しはなく、EXE呼び出しは異なります。例:

exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='main',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
14
Alan L