Za każdym razem jak stworzysz program w Pythonie, licz się z tym że nawet Pyinstallerem go tylko zapiszesz binarnie. Nadal będzie prosty do rozkodowania. Python ma politykę która przywodzi mi na myśl tylko open source, testowanie lub na własny użytek :). Wyjątek tyczy się tylko webframework'ów które ciężej uzyskać.
Jedyne wyjście to napisać w innym języku którego kodu nie rozczytasz, coś co zaszyfruje twój plik.exe i przy odpaleniu będzie go odszyfrowywał, po tym dopiero wykonując ;p. Pozwoli ci to zachować kod tajnym przed najprostszymi zjadaczami chleba o podstawowej wiedzy :).
(Czyt. plik wykonywalny z innego języka, np. C, bo nie wymaga żadnych bibliotek. który rozszyfrowuje do postaci pyinstallerowej i dopiero go wykonuje. Dłuższy czas uruchamiania, ale jeśli chodzi o bezpieczeństwo, to wybaczalne.)