web-dev-qa-db-ja.com

pyinstallerでUPXを使用するにはどうすればよいですか?

PyinstallerでUPXを使用するにはどうすればよいですか?

ドキュメントをフォローしています。

UPXをダウンロードしました。

私のファイルは次のようになります:

import csv
import Selenium
import pandas

print('Hello')

次に実行します:

pyinstaller -F --upx-dir C:\Users\DD\Downloads\upx394w\upx394w\123\upx308w\upx.exe zz.spec

これはファイルのサイズには影響しません。

これを機能させる方法はありますか?

# -*- mode: python -*-

block_cipher = None


a = Analysis(['zz.py'],
             pathex=['C:\\Users\\DA\\13\\14'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='zz',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
10
user9062171

UPX実行可能ファイルではなく、UPXディレクトリを指定する必要があります。

例えば。:

pyinstaller myfile.py --upx-dir=..\upx391w -y --onefile

12
denfromufa

PyInstallerが現在の回答とコメントが示唆するよりも(2019年9月に)より役立つように見えるため、新しい回答を追加します。

UPXが機能している場合、ビルドの早い段階で出力934 INFO: UPX is available.が表示されます。

さらに、PyInstallerがupxを呼び出している多くの出力行を確認できます。

--upx-dirを指定しませんでしたが、upx.exe環境変数で$PATHを使用できました。

1
GlennS

GlennSのコメントに加えて、この動作はpyinstallerのドキュメントに記載されています。したがって、これは、この点に関して文書化されていない偶発的な利点ではありません。
参照 https://pyinstaller.readthedocs.io/en/v3.3.1/usage.html#using-upx

0
mercury