Я удивлен, что никто не упомянул об этом раньше, но Cython кажется жизнеспособным решением этой проблемы.Он возьмет ваш код Python и переместит его в CPython-совместимый C-код.Вы также получаете небольшой прирост скорости (~ 25% в последний раз, когда я проверял), поскольку он будет скомпилирован в машинный код, а не только в байт-код Python.Вы все еще должны быть уверены, что у пользователя установлен Python (либо сделав его обязательным предварительным условием для пользователя, либо связав его как часть процесса установки).Кроме того, вам нужно иметь хотя бы одну небольшую часть вашего приложения на чистом Python: хук в основную функцию.
Так что вам нужно что-то базовое, как это:
import cython_compiled_module
if __name__ == '__main__':
cython_compiled_module.main()
Но это эффективно не протекает детали реализации.Я думаю, что использование Cython должно соответствовать критериям, указанным в вопросе, но оно также вводит дополнительную сложность компиляции в C, что лишает некоторые из простых кроссплатформенности Python.Стоит ли это того или нет, решать только вам.
Как уже говорили другие, даже полученный скомпилированный код C может быть декомпилирован с небольшими усилиями, но он, вероятно, намного ближе к типу запутывания, которым вы былиизначально надеясь на.