Eu quero criar um único executável do meu projeto Python. O usuário deve ser capaz de fazer o download e executá-lo sem precisar instalar o Python. Se eu estivesse apenas distribuindo um pacote, poderia usar pip, wheel e PyPI para construí-lo e distribuí-lo, mas isso requer que o usuário tenha Python e saiba como instalar pacotes. O que posso usar para construir um executável autocontido de um projeto Python?
python
compilation
exe
packaging
software-distribution
ShadowFlame
fonte
fonte
pdb
) não tem acesso fácil aos arquivos que estão sendo executados,py2exe
(não sei sobre os outros) não inclui.py
arquivos, então você não verá linhas de origem nos rastreamentos de pilha.Respostas:
Aqui estão alguns exemplos comuns. A menos que explicitamente indicado, todos os projetos listados abaixo estão sendo mantidos ativamente desde minha última edição (janeiro de 2020).
Também incluí links para seus respectivos sites, repositórios e listas de PyPi, caso você queira verificar por si mesmo a frequência com que eles foram atualizados.
Além disso, salvo indicação em contrário, todos os programas listados abaixo produzirão um exe especificamente para o sistema operacional em que está sendo executado. Portanto, por exemplo, executar o Pyinstaller no Windows produzirá um exe do Windows, mas executar o Pyinstaller no Linux produzirá um exe do Linux. Se você quiser produzir um exe para vários sistemas operacionais, terá que examinar o uso de máquinas virtuais ou algo como o Wine .
Todos os programas a seguir funcionam de forma semelhante - eles agrupam o Python e o seu programa, combinando-os efetivamente para produzir um executável.
PyInstaller:
cx_Freeze:
py2app:
Nota: as versões anteriores deste post incluíam write-ups para py2exe ( repo ) e bbfreeze ( repo ). Ambos os projetos foram removidos desta lista: eles viram pouca ou nenhuma atividade por vários anos e parecem estar completamente sem manutenção. Veja o histórico de edições para as redações antigas.
Claro, essa não é a única maneira de fazer as coisas:
pynsist:
Outras notas: Pynsist parece oferecer suporte ao agrupamento de qualquer versão arbitrária de Python com seu aplicativo. No entanto, a própria ferramenta requer Python 3.5+ para funcionar.
O Pynsist criará um instalador do Windows para o seu programa, que instalará diretamente o Python no computador do usuário em vez de agrupá-lo com o seu código e criará atalhos que vinculam ao seu script Python. Embora este programa produza apenas instaladores do Windows, parece que você ainda pode executar o Pynsist em computadores Mac e Linux.
Nuitka:
cython:
Minha preferência pessoal é usar o PyInstaller, pois é o mais fácil de instalar e executar, foi projetado para funcionar bem com várias bibliotecas populares, como numpy ou pygame, e tem grande compatibilidade com vários sistemas operacionais e versões de Python.
No entanto, também construí vários exes com sucesso usando cx_Freeze sem muita dificuldade, então você também deve considerar experimentar esse programa.
Ainda não tive a chance de experimentar extensivamente o pynist, Nuitka ou Cython, mas eles parecem soluções muito interessantes e inovadoras. Se você tiver problemas ao usar o primeiro grupo de programas, pode valer a pena tentar um destes três. Como eles funcionam de maneira fundamentalmente diferente dos programas estilo Pyinstaller / cx_freeze, eles podem ter sucesso naqueles casos extremos em que o primeiro grupo falha.
Em particular, acho que pynist é uma boa maneira de contornar todo o problema de distribuição de seu código: Macs e Linux já têm suporte nativo para Python, e apenas instalar Python no Windows pode realmente ser a solução mais limpa. (A desvantagem agora é que você precisa se preocupar em almejar várias versões das bibliotecas de instalação do Python +)
Nuitka e Cython (em minha experiência limitada) parecem funcionar muito bem. Novamente, eu mesmo não os testei extensivamente e, portanto, minha principal observação é que eles parecem demorar muito mais para produzir um exe do que os programas do estilo "congelar".
Dito isso, converter seu programa Python em um executável não é necessariamente a única maneira de distribuir seu código. Para saber mais sobre as outras opções disponíveis, consulte os seguintes links:
fonte
msvcrxx.dll
, ondexx
é um número de versão) para fazer o .exe executar (ou pedir aos usuários que o instalem por conta própria). Isso é necessário porque o Python é desenvolvido no Windows usando o Visual Studio.pyinstaller ainda está em desenvolvimento ativo. Você pode ver as últimas mudanças no GitHub.
Tem suporte para as três plataformas principais:
e é compatível com as versões 2.6 e 2.7 do Python. Não é compatível com Python 3, mas existe um branch experimental do Python 3 .
Atualizar
A partir da versão 3.2.1, ele oferece suporte a Python 2.7, 3.3-3.5
fonte
Melhor uso
pip install auto-py-to-exe
que fornece uma bela IU com todas as opções necessárias para criar um executável.Após a instalação, basta digitar
auto-py-to-exe
seu terminal ou prompt de comando.fonte