Como posso converter um arquivo .py para .exe para Python?


126

Estou tentando converter um programa Python bastante simples em um executável e não consegui encontrar o que estava procurando, então tenho algumas perguntas (estou executando o Python 3.6):

Os métodos para fazer isso que encontrei até agora são os seguintes

  1. baixando uma versão antiga do Python e usando pyinstaller/py2exe
  2. configurando um ambiente virtual no Python 3.6 que me permita fazer 1.
  3. baixar um conversor Python para C ++ e usá-lo.

Aqui está o que eu tentei / em quais problemas encontrei.

  • Eu instalei pyinstallerantes do download necessário antes dele (pypi-something) para que não funcionasse. Depois de baixar o arquivo de pré-requisito, pyinstallerainda não o reconhece.
  • Se estou configurando uma virtualenv no Python 2.7, eu realmente preciso ter o Python 2.7 instalado?
  • Da mesma forma, os únicos conversores de python para C ++ que eu vejo funcionam apenas até o Python 3.5 - preciso baixar e usar esta versão se tentar isso?

4
Não sei por que isso foi prejudicado (talvez porque as recomendações de ferramentas sejam offtopic para SO), mas essa pergunta será útil para outras pessoas no futuro. Perguntas anteriores semelhantes não foram marcadas como offtopic, por exemplo, stackoverflow.com/questions/2136837/…
Chris_Rands

Respostas:


127

Etapas para converter .py para .exe no Python 3.6

  1. Instale o Python 3.6 .
  2. Instale o cx_Freeze (abra o prompt de comando e digite pip install cx_Freeze.
  3. Instale o idna (abra o prompt de comando e digite pip install idna.
  4. Escreva um .pyprograma chamado myfirstprog.py.
  5. Crie um novo arquivo python nomeado setup.pyno diretório atual do seu script.
  6. No setup.pyarquivo, copie o código abaixo e salve-o.
  7. Com a tecla shift pressionada, clique com o botão direito do mouse no mesmo diretório para poder abrir uma janela do prompt de comando.
  8. No prompt, digite python setup.py build
  9. Se o seu script estiver livre de erros, não haverá problemas na criação do aplicativo.
  10. Verifique a pasta recém-criada build. Tem outra pasta nele. Dentro dessa pasta, você pode encontrar seu aplicativo. Executá-lo. Sinta-se feliz.

Veja o script original no meu blog .

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

packages = ["idna"]
options = {
    'build_exe': {    
        'packages':packages,
    },    
}

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)

EDITAR:

  • não se esqueça de myfirstprog.pycolocar o .pynome do arquivo de extensão conforme criado na etapa 4 ;
  • você deve incluir cada importpacote ed em sua .pyna packageslista (ex: packages = ["idna", "os","sys"])
  • any name, any number, any descriptionno setup.pyarquivo não deve permanecer o mesmo, você deve alterá-lo em conformidade (ex: name = "<first_ever>", version = "0.11", description = '')
  • os importpacotes ed devem ser instalados antes de você iniciar a etapa 8 .

10
Existe uma maneira de torná-lo executável 'autônomo'? Se eu prosseguir como você recomenda no seu artigo, terminarei na pasta exe.win.32-3.6. que está cheio de arquivos e diretórios de suporte (como 'coleções /', 'email' etc.). Muita coisa para uma impressão simples ('olá'). Gostaria de criar um arquivo único e executável, que será executado em outro computador como está, sem a necessidade de outros arquivos. Existe uma opção de compilação para isso?
FanaticD


2
@FanaticD Python não é sua melhor aposta. Cython (um pesadelo para começar a trabalhar) ou Nuitka seria sua melhor aposta. Mas fazê-los trabalhar é uma conquista em si mesma.
Tetora 30/10

Isso funcionaria no Python 3.5.3? (A última versão estável no Debian 9 Stretch).
Gerard

Como eu importaria from sklearn.externals import joblib? como mencionado na edição, etapa 2. #
228

77

O Python 3.6 é suportado pelo PyInstaller.

Abra uma janela de cmd na sua pasta Python (abra uma janela de comando e use cdou enquanto mantém pressionada a tecla Shift, clique com o botão direito do mouse no Windows Explorer e escolha 'Abrir janela de comando aqui'). Então é só entrar

pip install pyinstaller

E é isso.

A maneira mais simples de usá-lo é digitando no prompt de comando

pyinstaller file_name.py

Para mais detalhes sobre como usá-lo, dê uma olhada nesta pergunta .


4
acabou de testar com python 3.7.0. Porém, muitos avisos foram compilados com êxito e executados no Windows 10
#

2
Eu compilei um programa com python 3.5.0 e sem avisos ou erros, e funciona como esperado
Menotdan

Alguém sabe o que importa em um Pyinstaller? Um exe criado no Windows 10 funcionará no Windows 8? ou o Windows 10 32bit build funcionará em sistemas Windows 10 de 64 bits?
Derik81 6/06

27

Existe um projeto de código aberto chamado auto-py-to-exe no GitHub . Na verdade, ele também usa PyInstaller internamente, mas como possui uma GUI simples que controla o PyInstaller, pode ser uma alternativa confortável. Ele também pode gerar um arquivo independente em contraste com outras soluções. Eles também fornecem um vídeo mostrando como configurá-lo.

GUI:

Auto Py para Exe

Resultado:

Resultado


2
Você deveria ter mencionado que requer MVC ++. erro: Microsoft Visual C ++ 14.0 é necessário.
SKR

3
Eu não acho nenhum valor nisso, pois ele é construído no pyinstaller e se você receber um erro no pyinstaller, também o terá aqui!
CV_passionate

9

Não sei dizer o que é melhor, mas uma ferramenta que usei com sucesso no passado foi o cx_Freeze . Eles foram atualizados recentemente (em 7 de janeiro de 17) para a versão 5.0.1 e suporta o Python 3.6.

Aqui está o pypi https://pypi.python.org/pypi/cx_Freeze

A documentação mostra que há mais de uma maneira de fazer isso, dependendo de suas necessidades. http://cx-freeze.readthedocs.io/en/latest/overview.html

Ainda não testei, então vou apontar para um post em que a maneira simples de fazer isso foi discutida. Algumas coisas podem ou não ter mudado.

Como uso o cx_freeze?


11
Vale ressaltar, o cxFreeze não executa executáveis ​​de arquivo único.
Eddie Hart

7

Eu tenho usado Nuitka e PyInstaller com meu pacote, PySimpleGUI.

Nuitka Houve problemas ao compilar o tkinter com o Nuikta. Um dos colaboradores do projeto desenvolveu um script que resolveu o problema.

Se você não estiver usando o tkinter, ele pode "funcionar" para você. Se você estiver usando o tkinter, diga e tentarei publicar o script e as instruções.

PyInstaller Estou executando o 3.6 e o ​​PyInstaller está funcionando muito bem! O comando que eu uso para criar meu arquivo exe é:

pyinstaller -wF myfile.py

O -wF criará um único arquivo EXE. Como todos os meus programas têm uma GUI e não quero que a janela de comando seja exibida, a opção -w oculta a janela de comando.

Isso é o mais próximo possível de executar o que parece ser um programa Winforms que foi escrito em Python.

[Atualização 20-Jul-2019]

Existe uma solução baseada na GUI do PySimpleGUI que usa o PyInstaller. Ele usa PySimpleGUI. É chamado pysimplegui-exemaker e pode ser instalado por pip.

pip install PySimpleGUI-exemaker

Para executá-lo após a instalação:

python -m pysimplegui-exemaker.pysimplegui-exemaker


5

Agora você pode convertê-lo usando o PyInstaller. Eu trabalho com até Python 3.

Passos:

  1. Ligue o seu PC
  2. Abrir prompt de comando
  3. Comando Enter pip install pyinstaller
  4. Quando estiver instalado, use o comando 'cd' para ir para o diretório de trabalho.
  5. Comando de execução pyinstall <filename>

Por que as pessoas estão votando contra isso? Estou apenas postando esta resposta para ajudar.
Tejas Joshi

3
porque não funciona no Python 3.6 que o OP escreveu especificamente que ele está usando.
uri

Pyinstaller deve funcionar agora. Se isso não acontecer, diga-me nos comentários
Tejas Joshi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.