Uma ótima ferramenta para gerar arquivos executáveis em Python para Windows e Linux é o PyInstaller. Com ela você gera arquivos binários e que não dependem de outras bibliotecas para serem executados.
Segue uma tradução da página principal de pyinstaller.org
PyInstaller é um programa que congela (pacotes) Python em executáveis autônomos, no Windows, Linux, Mac OS X, FreeBSD, Solaris e AIX. Suas principais vantagens em relação a ferramentas semelhantes são que o PyInstaller trabalha com Python 2.7 e 3.4-3.7, ele constrói executáveis menores graças à compressão transparente, é totalmente multiplataforma e usa o suporte do sistema operacional para carregar as bibliotecas dinâmicas, garantindo compatibilidade total.
O principal objetivo do PyInstaller é ser compatível com pacotes de terceiros prontos para uso. Isso significa que, com o PyInstaller, todos os truques necessários para fazer com que os pacotes externos funcionem já estão integrados no próprio PyInstaller, para que não haja necessidade de intervenção do usuário. Você nunca precisará procurar por truques em wikis e aplicar modificações personalizadas a seus arquivos ou a seus scripts de configuração. Como exemplo, bibliotecas como PyQt, Django ou matplotlib são totalmente suportadas, sem ter que manipular plugins ou arquivos de dados externos manualmente. Confira nossa lista de compatibilidade de Pacotes Suportados para mais detalhes.
PyInstaller Quickstart
Instale PyInstaller de PyPI:
pip install pyinstaller
Vá para o diretório que contém seu código fonte e…
pyinstaller yourprogram.py
Será gerado um pacote em uma sub-pasta chamada dist
.
Para mais informações veja o manual.