Python doesn't convert it's code into machine code, something that hardware can understand. It convert it into something called byte code. So within python compilation happens, but it is not just in machine language. It is into byte code (.pyc or .pyo) and this byte code can't be understood by the CPU. So we need an interpreter called python virtual machine to execute the byte code.