Compile seu código Python!

Códigos fonte em Python são interpretados, ou seja, são compilados na hora de executar. Os arquivos compilados (bytecode na verdade) tem a extensão .pyc mas você não precisa deles.

É importante notar que a engenharia reversa de um arquivo .pyc é muito simples de fazer. Mas se você quiser realmente converter para arquivos binários o seu código Python você pode usar o Cython.

Veja este excelente tutorial da Medium: https://medium.com/@xpl/protecting-python-sources-using-cython-dcd940bb188e

Executáveis em Python

 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.

https://www.pyinstaller.org/

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.