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:
- Links : Site || Repo || PyPi
- Suporta : Python 2.7 e Python 3.4 - 3.7 no Windows, Mac e Linux.
cx_Freeze:
- Links: Site || Repo || PyPi
- Suporta: Python 2.7 e 3.5 - 3.8 no Windows, Mac e Linux.
py2app:
- Links: Site || Repo || PyPi
- Suporta: Python 2.7 e 3.3 (?) - 3.7 (?) Somente no Mac.
- Nota: Na minha última edição, não fui capaz de determinar de forma conclusiva a faixa exata de versões do Python suportadas pelo pyapp. A versão mais recente menciona o suporte ao Python 3.7.
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:
- Links: Site || Repo || PyPi
- Suporta: Todas as versões Python? Observação - criará apenas instaladores do Windows .
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:
- Links: Site || Repo (espelho Github) || PyPi
- Suporta: Python 2.6 - 2.7 e Python 3.3 - 3.7 no Windows, Mac e Linux.
- Outras notas: Nuitka literalmente compilará seu código Python e produzirá um exe (ao contrário de outros projetos, que simplesmente incluem Python) para tentar acelerar seu código. Como efeito colateral, você também receberá um exe útil para distribuir. Observe que você precisa ter um compilador C ++ disponível em seu sistema.
cython:
- Links: Site || Repo || PyPi
- Suporta: Python 2.6 - 2.7 e Python 3.2 - 3.8 no Windows, Mac e Linux.
- Outras notas: Cython é semelhante ao Nuitka por ser um compilador Python. No entanto, em vez de compilar seu código diretamente, ele o compilará em C. Você pode então pegar esse código C e transformá-lo em um exe . Você precisará ter um compilador C disponível em seu sistema.
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: