Pierwsze pytanie - czy aplikacja jest "jednoplikowa" (czyli, że to tylko jeden skrypt pythona), czy też masz kilka modułów? Są co najmniej trzy metody aby to osiągnąć:
1. pyinstaller - niemniej ma on swoje ograniczenia, szczególnie gdy się używa różnych bibliotek (ja miałem z nim wiele problemów).
2. skrypt, który może być plikiem wykonywalnym (chmod +x plik.py) i jeśli wtedy na górze plik dasz dobrego shebanga (czyli #!/usr/bin/env python3) to jeśli tylko w systemie jest python3 (a dzisiaj już zawsze jest) to twój skrypt się uruchomi. Warunkiem jest, abyś nie musiał mieć bibliotek zewnętrznych (takich, które trzeba instalować pipem).
3. można po prostu zrobić setup.py, i zrobić dwa proste skrypty bashowe - pierwszy do automatycznej instalacji środowiska (utworzenia venv i uruchomienia setup.py), a drugi do activate virtualenva i uruchomienia aplikacji w środku.
Jeśli chciałbyś poznać więcej szczegółów to mogę podrzucić przykłady tego 3-go sposobu, bo on jest najbardziej popularny i najmniej zawodny.