Como fazer um executável independente de script em Python para executar sem qualquer dependência?
então, existe uma maneira de compilar scripts Python para executáveis autônomos?
16 answers
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 .
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.
E uma terceira opção é:cx_Freeze
, que é uma plataforma cruzada.
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.
Ele mostrou alguns problemas para criar arquivos únicos no Windows 64 bits: usando bundle_ files = 1 com o py2exe não está funcionando;
É necessário criar um setup.py arquive para que funcione. http://www.py2exe.org/index.cgi/Tutorial#Step2;
Eu tive problemas com dependências que você tem que resolver importando pacotes no arquivo de configuração;
Não consegui fazê-lo funcionar com o PyQt..
- é mais fácil de usar.
pyinstaller.exe --onefile MyCode.py
Você pode criar um único arquivo, entre outras opções (https://pyinstaller.readthedocs.io/en/stable/usage.html#options).
Só tive um problema ao usar o pacote PyInstaller e multiprocessamento que foi resolvido usando esta receita: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing
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.
Podes gostar de py2exe . você também encontrará aí infos para fazê - lo no linux
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()
)
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
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.
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.
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).
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.
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.
Disseram-me que PyRun, https://www.egenix.com/products/python/PyRun/, também é uma opção.
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.
- Eu posso realmente usar esta mesma pasta no ubuntu (execute python3 myfile.py) e windows (faça duplo-click no atalho). 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.