While I generally agree with you, there is a project I'm considering right now in which, for reasons I will not discuss, it is more or less a requirement to make the source code unavailable until a later stage (1 year or so), at which point customer will receive the source code. I know that it is always possible to reverse engineer with enough effort - but specifically, in this project, I'm trying to make it easy for me to obfuscate and hard for an adversary to de-obfuscate and modify (to the point of being uneconomical).
I said "you might want to have a look" in the sense of "you are not up-to-date". I have only tried it on small pieces of software, but both Cython and Nuitka can start from lightly annotated / mostly unmodified Python code and produce native code that can be x1-x10 faster, and almost as hard to decompile as C++. At some point PyPy was also able to produce AOT-compiled native executables (based on type info seen during a specific run) but IIRC it's no longer the case.
Web2py is extremely dynamic, so I expect even if e.g. Nuitka can make it native, it won't be faster and still have enough clues to make decompiling much easier than C++. However, if it does work, it will be enough for my purposes for this project.