Como fazer um executável independente de script em Python para executar sem qualquer dependência?

Estou a construir uma aplicação Python e não quero forçar os meus clientes a instalar Python e módulos. Eu também quero fazer minha aplicação de código fechado.

então, existe uma maneira de compilar scripts Python para executáveis autônomos?

Author: ThinkingStiff, 2011-03-28

16 answers

Você pode usar py2exe como já respondeu, e usar cython para converter a sua chave .py arquivos em .pyc, C arquivos compilados, como .dll no Windows e .so em linux, muito mais difícil de reverter do que comum .pyo e .pyc arquivos (e também o ganho em desempenho!)

 167
Author: neurino, 2015-04-30 20:32:01

Pode usar O PyInstaller para embalar os programas Python como executáveis autónomos. Ele funciona no Windows, Linux e Mac.

Arranque Rápido PyInstaller

Instalar o PyInstaller do PyPI:

pip install pyinstaller

Vá para o directório do seu programa e execute:

pyinstaller yourprogram.py

Isto irá gerar o pacote numa subdiretoria chamada dist.

Para uma visita mais detalhada, ver o manual .

 146
Author: Rumple Stiltskin, 2018-02-27 19:09:04

Talvez queira investigar Nuitka. Ele pega o código fonte python e converte-o em chamadas de API C++. Em seguida, ele se compila em um executável binário (ELF em Linux). Ele já existe há alguns anos e suporta uma ampla gama de versões Python.

Você provavelmente também vai ter uma melhoria de desempenho se você usá-lo. Recomendado.

 64
Author: cdarke, 2013-09-09 07:11:55

E uma terceira opção é:cx_Freeze, que é uma plataforma cruzada.

 21
Author: Katriel, 2011-03-28 11:43:57

Gostaria de compilar algumas informações úteis sobre a criação de ficheiros autónomos no windows usando o Python 2.7.

Já usei o py2exe e funciona, mas tive alguns problemas.

Esta última razão fez-me tentar o PyInstaller. http://www.pyinstaller.org / . Na minha opinião, é muito melhor porque:
  • é mais fácil de usar.
Eu sugiro ... a criar um .ficheiro bat com as seguintes linhas, por exemplo (pyinstaller.o exe deve estar na localização do Windows):
pyinstaller.exe --onefile MyCode.py
Então ... , Eu acho que, pelo menos para o python 2.7, uma opção melhor e mais simples é o PyInstaller.
 19
Author: Diego, 2017-06-11 20:01:14

SIM, é possível compilar scripts Python em executável independente.

PyInstaller pode ser usado para converter programas Python stand-alone executáveis, sob Windows, Linux, Mac OS X, FreeBSD, Solaris e AIX. É um dos conversores recomendados.

O Py2exe converte os programas de Python em apenas executáveis na plataforma Windows.

Cython é um compilador estático para tanto a linguagem de programação Python e a linguagem de programação Cython estendida.

 18
Author: fury.slay, 2017-02-17 07:39:42

Podes gostar de py2exe . você também encontrará aí infos para fazê - lo no linux

 17
Author: user237419, 2011-03-28 11:06:41

Utilize py2exe.... usar abaixo configurar os ficheiros:

 from distutils.core import setup
 import py2exe

 from distutils.filelist import findall
 import matplotlib

 setup(
       console=['PlotMemInfo.py'],

       options={
                'py2exe': {
                'packages' : ['matplotlib'],
            'dll_excludes': ['libgdk-win32-2.0-0.dll',
                                 'libgobject-2.0-0.dll',
                 'libgdk_pixbuf-2.0-0.dll']
                          }
                },
       data_files = matplotlib.get_py2exe_datafiles()
     )
 13
Author: Anand, 2014-01-09 06:15:46

Eu também recomendo pyinstaller para uma melhor compatibilidade reversa, como python 2.3-2.7.
para py2exe , tem de ter o python 2, 6

 9
Author: yantaq, 2013-04-24 00:55:24

Para os programas do Python 3. 2, a única opção é o Cxfreeze. Construa-o a partir de fontes ou não funcionará.

Para o python 2.x I suggest pyinstaller as it can package a python program in a single executable, unlike CxFreeze which outputs also libraries.

 8
Author: ravi.chunduru, 2012-08-28 20:14:54

O Py2exe fará o ficheiro exe que quiser, mas precisa de ter a mesma versão do MSVCR90.vais usar a tua nova exe. Ver http://www.py2exe.org/index.cgi/Tutorial para mais informações.

 6
Author: Belial, 2014-07-29 06:21:34

Poderá encontrar a lista de utilitários de distribuição listados @ https://wiki.python.org/moin/DistributionUtilities.

Eu uso bbfreeze e tem funcionado muito bem (mas ainda não tem suporte para python 3).

 5
Author: Joe, 2015-04-08 13:25:27

Não é exatamente uma embalagem do código python, mas agora há também grumpy do google, que transporta o código para ir. Ele não suporta a api python C, então ele pode não funcionar para todos os projetos.

 4
Author: freeformz, 2017-01-18 18:34:23

Utilize Cython para converter para c, compilar e ligar com o gcc. Outra poderia ser, fazer as funções de núcleo em c (As que você quer fazer difícil de reverter), compilá-las e usar o Python boost para importar o código compilado ( além de obter uma execução de código muito mais rápida). em seguida, use qualquer ferramenta mencionada para distribuir.

 2
Author: F.Moure, 2017-01-24 04:50:02

Disseram-me que PyRun, https://www.egenix.com/products/python/PyRun/, também é uma opção.

 1
Author: Kraig Brockschmidt - MSFT, 2017-03-28 17:48:13
Usando o pyinstaller, encontrei um método melhor usando um atalho para o .exe em vez de fazer {[[0]}. De qualquer forma, provavelmente há alguns arquivos de dados ao redor e se você está executando um aplicativo baseado em site, então o seu programa depende de html, JS, arquivos css também. Não vale a pena levar todos estes ficheiros para algum lado.. em vez disso, e se mudarmos o caminho de trabalho?

Faça um atalho para o exe, mova - o para cima e defina os caminhos alvo e início-in, como especificado, para ter os caminhos relativos a ir para dest\pasta: Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\" Pode mudar o nome de atalho para qualquer coisa que mude o nome para"GTFS-Manager"
Agora, quando eu clicar duas vezes no atalho, é como se eu python-correu o arquivo! Achei esta abordagem melhor do que a de:

    No caso do onefile, há um problema com A.dll em falta para win7 OS, que precisa de alguma instalação anterior, etc. Bocejar. Com a construção habitual com vários arquivos, não há tais problemas. Todos os ficheiros que o meu script em python usa estão a instalar um servidor de tornado web e ... precisa de um site cheio de arquivos para estar lá!) não precisa ser movido em qualquer lugar: eu simplesmente criar o atalho no topo.
  1. Eu posso realmente usar esta mesma pasta no ubuntu (execute python3 myfile.py) e windows (faça duplo-click no atalho).
  2. Não preciso de me preocupar com a invasão demasiado complicada .ficheiro spec para incluir ficheiros de dados, etc.

Oh, lembre-se de apagar a pasta de compilação após a construção, irá gravar no tamanho.

 1
Author: Nikhil VJ, 2018-04-24 21:05:45