
🔐 Obfusque e Converta Scripts Python em Executáveis (.exe/.bin) no Windows e Linux com PyArmor, Nuitka e PyInstaller
Se você precisa proteger seu código e ainda rodar seu script como um aplicativo de verdade no Windows ou Linux (inclusive via WSL), aqui vai um guia essencial para transformar .py
em .exe
ou .bin
com segurança e performance.
🔒 Proteja com PyArmor antes de empacotar
Antes de converter o script em executável, vale aplicar obfuscação com PyArmor. No Windows, um exemplo de uso seria:
pyarmor gen btc_relatorio_import.py
Saída típica:
INFO obfuscating file btc_relatorio_import.py
INFO write dist\btc_relatorio_import.py
INFO obfuscate scripts OK
✅ Isso garante que o código-fonte será protegido antes da conversão final.
⚙️ Converta com Nuitka ou PyInstaller (com PyArmor aplicado)
Nuitka é um compilador real (C/C++), excelente para performance.
PyInstaller empacota rapidamente, com maior compatibilidade.
Ambos funcionam bem, mas possuem características distintas:
Ferramenta | Tipo | Performance | Tamanho | Compatibilidade |
---|---|---|---|---|
PyInstaller | Empacotador | Média | Maior | Alta |
Nuitka | Compilador C++ | Alta | Menor | Média |
💣 Incompatibilidade importante
⚠️ Cuidado: PyArmor e Nuitka não são compatíveis diretamente.
Ao usar PyArmor, prefira PyInstaller para evitar conflitos na conversão.
🛠️ Compilando com Nuitka (sem PyArmor)
Windows (.exe):
nuitka a.py ^
--standalone ^
--onefile ^
--include-package=requests ^
--include-package=pandas ^
--nofollow-import-to=matplotlib ^
--noinclude-numba-mode=nofollow ^
--windows-icon-from-ico=qb-64x64.ico ^
--output-filename=Puzzle_Procurar_RANDOM.exe ^
--lto=yes --remove-output --show-progress --clang
Linux / WSL (.bin):
nuitka btc_relatorio_import.py \
--standalone --onefile \
--include-package=requests \
--include-package=pandas \
--nofollow-import-to=matplotlib \
--noinclude-numba-mode=nofollow \
--output-filename=btc_relatorio_import \
--lto=yes --optimize=2 --remove-output --show-progress
⚙️ Compilando com PyInstaller (compatível com PyArmor)
pyinstaller --onefile --icon=qb-64x64.ico dist/btc_relatorio_import.py
Dica: use UPX para compactar:
upx --best --lzma dist/btc_relatorio_import.exe
💡 Bônus: customize a janela do terminal (Windows)
import ctypes
ctypes.windll.kernel32.SetConsoleTitleW("Análise BTC - QB")
📂 Estrutura de Projeto Recomendada
btc_project/
├── btc_relatorio_import.py
├── qb-64x64.ico
├── build_windows.bat
├── build_linux.sh
└── dist/
├── btc_relatorio_import.exe # Windows
└── btc_relatorio_import # Linux
🚀 Distribuindo via GitHub
/SeuRepositorio
├── windows/SNAPSHOT_Bitcoin.exe
├── linux/SNAPSHOT_Bitcoin.bin
README.md:
### Windows:
1. Baixe `SNAPSHOT_Bitcoin.exe`
2. Clique duas vezes para executar
### Linux:
1. Baixe `SNAPSHOT_Bitcoin.bin`
2. Torne executável:
chmod +x SNAPSHOT_Bitcoin.bin
./SNAPSHOT_Bitcoin.bin
✅ Conclusão
-
💡 Use PyArmor para proteger o código.
-
🚫 Evite Nuitka se estiver usando PyArmor.
-
⚙️ Use PyInstaller para compatibilidade total.
-
🧪 Use Nuitka para performance máxima — quando não precisar obfuscar.
Com essas ferramentas, você consegue distribuir seu script Python com segurança e aparência profissional, seja no Windows ou no Linux/WSL.
Boa! Agora o erro é com o base58
— mesmo esquema: o Nuitka não achou porque ainda não está instalado no seu ambiente WSL.
✅ Solução final:
Roda isso pra resolver:
pip install base58
📦 Instale tudo de uma vez (se ainda não fez):
Se quiser garantir que todos os pacotes estejam no lugar certo de uma vez só, faz o seguinte:
1. Cria um requirements.txt
com:
bit
pg8000
base58
2. E instala com:
pip install -r requirements.txt
🚀 E se quiser automatizar tudo:
Aqui vai o script .sh
completo pra compilar no WSL/Ubuntu — salva como compilar.sh
:
#!/bin/bash
echo "[+] Instalando dependências Python..."
pip install bit pg8000 base58
echo "[+] Compilando com Nuitka..."
nuitka btc_privatekey_endomorph_search.py \
--standalone --onefile \
--include-package=bit \
--include-package=pg8000 \
--include-package=base58 \
--nofollow-import-to=tkinter \
--output-filename=btc_privatekey_endomorph_search_semprint \
--lto=yes --remove-output --show-progress
echo "[✓] Compilação finalizada!"
Depois dá permissão e executa:
chmod +x compilar.sh
./compilar.sh
😎