Estou construindo um aplicativo Python e não quero forçar meus clientes a instalar o Python e os módulos.
Então, existe uma maneira de compilar um script Python para ser um executável independente?
python
executable
Jeff
fonte
fonte
Respostas:
Você pode usar py2exe como já respondido e usar o cython para converter seus
.py
arquivos- chave em arquivos.pyc
compilados em C, como.dll
no Windows e.so
no linux, muito mais difíceis de reverter do que os arquivos.pyo
e os comuns.pyc
(e também obter desempenho!)fonte
Você pode usar o PyInstaller para empacotar programas em Python como executáveis independentes. Funciona no Windows, Linux e Mac.
fonte
Você pode querer investigar Nuitka . Ele pega o código-fonte python e o converte em chamadas da API C ++. Em seguida, ele compila em um binário executável (ELF no Linux). Já existe há alguns anos e suporta uma ampla variedade de versões do Python.
Você provavelmente também terá uma melhoria de desempenho se usá-lo. Recomendado.
fonte
Gostaria de compilar algumas informações úteis sobre a criação de arquivos autônomos no Windows usando o Python 2.7.
Eu usei py2exe e funciona, mas tive alguns problemas.
Ele mostrou alguns problemas para criar arquivos únicos no Windows 64 bits: O uso de bundle_files = 1 com py2exe não está funcionando ;
É necessário criar um arquivo setup.py para que ele funcione. http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
Eu tive problemas com dependências que você precisa resolver importando pacotes no arquivo de instalação;
Não consegui fazê-lo funcionar em conjunto com o PyQt.
Esta última razão me fez tentar PyInstaller http://www.pyinstaller.org/ .
Na minha opinião, é muito melhor porque:
Sugiro a criação de um arquivo .bat com as seguintes linhas, por exemplo (pyinstaller.exe deve estar no caminho do Windows):
Você pode criar um único arquivo, entre outras opções ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ).
Eu tive apenas um problema ao usar o PyInstaller e o pacote de multiprocessamento que foram resolvidos usando esta receita: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
Então, acho que, pelo menos para o python 2.7, uma opção melhor e mais simples é o PyInstaller.
fonte
--onefile
sinalizador não ajudará você a torná-lo portátil no Windows, porque o executável ainda deseja vincular àapi-ms-win-crt-runtime-l1-1-0.dll
biblioteca (ou outras) que deve ser instalada através dovcredist
pacote. Portanto, uma dependência ainda existe e deve ser instalada antes da execução.Sim, é possível compilar scripts Python em executável independente.
O PyInstaller pode ser usado para converter programas Python em executáveis independentes, no Windows , Linux , Mac OS X , FreeBSD , Solaris e AIX . É um dos conversores recomendados.
py2exe converte scripts Python em apenas executável na plataforma Windows.
Cython é um compilador estático para a linguagem de programação Python e a linguagem de programação estendida Cython.
fonte
E uma terceira opção é
cx_Freeze
, que é multiplataforma.fonte
cx_Freeze
lançamentos listados no pypi desde o final de 2017. Este projeto foi abandonado?você pode gostar de py2exe . você também encontrará informações sobre como fazê-lo no linux
fonte
Use py2exe .... use os arquivos de configuração abaixo:
fonte
Eu gosto do pyinstaller - especialmente a variante "windowed":
Ele criará um único arquivo * .exe em uma pasta dist /.
fonte
Eu também recomendo o pyinstaller para melhor compatibilidade com versões anteriores, como o python 2.3 - 2.7.
para py2exe , você precisa ter o python 2.6
fonte
Para scripts Python 3.2, a única opção é o Cxfreeze. Construa a partir de fontes, caso contrário não funcionará.
Para o python 2.x, sugiro o pyinstaller, pois ele pode empacotar um programa python em um único executável, ao contrário do CxFreeze, que também gera bibliotecas.
fonte
O py2exe criará o arquivo exe que você deseja, mas você precisa da mesma versão do MSVCR90.dll na máquina em que irá usar o seu novo exe. Consulte http://www.py2exe.org/index.cgi/Tutorial para obter mais informações.
fonte
Você pode encontrar a lista de utilitários de distribuição listados em https://wiki.python.org/moin/DistributionUtilities .
Eu uso o bbfreeze e tem funcionado muito bem (ainda para ter suporte ao python 3).
fonte
.so
arquivos ou copia os arquivos .egg diretamente e eles devem estar presentes em um único diretório (ou como um único arquivo). Não é necessária instalação.Isso cria um arquivo EXE autônomo no Windows. NOTA IMPORTANTE: O arquivo exe será gerado em uma pasta chamada 'dist'
você pode instalar o pyinstaller usando
pip install PyInstaller
fonte
Não é exatamente um empacotamento do código python, mas agora também existe um rabugento do google, que transpila o código para o Go. Ele não suporta a api C do python, portanto, pode não funcionar para todos os projetos.
fonte
Usando pyinstaller, encontrei um método melhor usando o atalho para o .exe em vez de fazer
--onefile
. De qualquer forma, provavelmente existem alguns arquivos de dados e, se você estiver executando um aplicativo baseado em site, seu programa também depende de arquivos html, js, css. Não adianta mover todos esses arquivos para algum lugar. Em vez disso, se movermos o caminho de trabalho para cima.Faça um atalho para o exe, mova-o para cima e defina os caminhos de destino e de inicialização, conforme especificado, para ter caminhos relativos indo para dist \ folder: É
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
possível renomear o atalho para qualquer coisa que seja renomeada para "GTFS-Manager"Agora, quando eu dobro -clique no atalho, é como se eu tivesse executado o arquivo em python! Achei essa abordagem melhor que a seguinte
--onefile
:Ah, lembre-se de excluir a pasta de compilação após a compilação, economizará tamanho.
fonte
Use o Cython para converter para c, compilar e vincular ao gcc. Outra poderia ser: criar as funções principais em c (aquelas que você deseja dificultar a reversão), 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). depois use qualquer ferramenta mencionada para distribuir.
fonte
Disseram-me que o PyRun, https://www.egenix.com/products/python/PyRun/ , também é uma opção.
fonte