Como compilar o script Python para um executável binário

118

Preciso converter um script Python em um executável do Windows.

Tenho o Python 2.6 instalado python26.

Eu criei um script e o mantive C:\pythonscript. Dentro desta pasta existem dois arquivos

Setup.pye oldlogs.py(este arquivo precisa de cobertura)

setup.py código é

from distutils.core import setup
import py2exe

setup(console=['oldlogs.py'])

Como posso converter oldlogs.py em um arquivo exe?

Dewal Tewari
fonte
1
veja o tutorial
Ashwini Chaudhary,
Para completar, cx_Freeze é outra ferramenta que você pode usar para isso (junto com PyInstaller e py2exe, que outras respostas já mencionaram).
Thomas K

Respostas:

63

Ou use o PyInstaller como alternativa ao py2exe . Este é um bom ponto de partida . PyInstaller também permite criar executáveis ​​para Linux e Mac ...

Aqui está como alguém poderia facilmente usar o PyInstaller para resolver o problema em questão:

pyinstaller oldlogs.py

Da documentação da ferramenta:

PyInstaller analisa myscript.py e:

  • Grava myscript.spec na mesma pasta do script.
  • Cria uma pasta construída na mesma pasta do script, se ela não existir.
  • Grava alguns arquivos de log e arquivos de trabalho na pasta de construção.
  • Cria uma pasta dist na mesma pasta do script, se ela não existir.
  • Grava a pasta executável myscript na pasta dist.

Na pasta dist, você encontra o aplicativo empacotado que distribui aos usuários.

Zenpoy
fonte
9
cx_Freeze é melhor, ele suporta até mesmo python 3.3.
Ashwini Chaudhary,
Ei, isso funciona até com o wine , pelo menos até a versão 3.4 do python, que oferece suporte ao Windows XP. Muito bom! Eu criei um executável do Windows com wine , python 3.4 e pip-Win (basta seguir as instruções de instalação no site do pyinstaller) na minha máquina Fedora Linux.
erik
3
@AshwiniChaudhary, Ambos parecem ser de plataforma cruzada .. no entanto, se eu tivesse que julgar rapidamente qual deles usar apenas com base em GitHubestrelas, PyInstallertem ~ 4000 estrelas, cx_Freezetem 200 estrelas. Portanto, PyInstallerparece ser mais popular e provavelmente tem mais casos extremos cobertos. por que você acha que cx_Freezeé melhor do que PyInstaller?
alpha_989
Observe que, em comparação com PyInstaller, "cx_Freeze não suporta a construção de um único arquivo exe, onde todas as bibliotecas para seu aplicativo são incorporadas em um arquivo executável." cx-freeze.readthedocs.io/en/latest/…
Taylor Edmiston
12

Eu recomendo PyInstaller , um script python simples pode ser convertido em um exe com os seguintes comandos:

utils/Makespec.py [--onefile] oldlogs.py

que cria um arquivo yourprogram.spec que é uma configuração para construir o exe final. O próximo comando cria o exe a partir do arquivo de configuração:

utils/Build.py oldlogs.spec

Mais pode ser encontrado aqui

uhz
fonte
1
# -*- mode: python -*-

block_cipher = None

a = Analysis(['SCRIPT.py'],
             pathex=[
                 'folder path',
                 'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_50c6cb8431e7428f',
                 'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_c4f50889467f081d'
             ],
             binaries=[(''C:\\Users\\chromedriver.exe'')],
             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='NAME OF YOUR EXE',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
Xooonas
fonte