web-dev-qa-db-fra.com

Comment utiliser UPX avec pyinstaller?

Comment utiliser UPX avec pyinstaller?

Je suis la documentation.

J'ai téléchargé UPX.

Mon fichier ressemble à:

import csv
import Selenium
import pandas

print('Hello')

Je lance ensuite:

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

Cela n'affecte pas la taille du fichier.

Une idée de comment je peux faire fonctionner ça?

# -*- 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

Le répertoire UPX, et non l'exécutable UPX, doit être spécifié:

par exemple.:

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

12
denfromufa

Ajout d'une nouvelle réponse, car il semble que PyInstaller soit plus utile maintenant (en septembre 2019) que la réponse et les commentaires actuels ne le suggèrent.

Je vois la sortie 934 INFO: UPX is available. au début de la construction si UPX fonctionne.

De plus, je peux voir de nombreuses lignes de sortie où PyInstaller appelle upx.

Je n'ai pas précisé --upx-dir, mais avait upx.exe disponible dans mon $PATH variable d'environnement.

1
GlennS

En plus du commentaire de GlennS: exact ce comportement est indiqué dans la documentation pyinstaller. il ne s'agit donc pas d'une indemnité accidentelle non documentée à cet égard.
Voir https://pyinstaller.readthedocs.io/en/v3.3.1/usage.html#using-upx

0
mercury