C can be interpreted too: https://en.wikipedia.org/wiki/CINT
Compilation is just interpreting what a program does and producing machine code (or other code in the case of transpilers) that computes the same thing.
Interpreters are just that, but instead of producing code, they run code in themselves thats computes the results directly.
One could even consider machine code just “obfuscated” assembly code. In that sense, machine code is just another language that also could be interpreted (intepretation-based emulators like Bochs) or compiled again (JIT-based emulators like DOSBox).
This brings up a slightly related question: is there a language that can’t be compiled?
Not sure if you're asking this platonically, but Futamura shows us that if you can built an interpreter then you can always transform that automatically to be a compiler.
This is used in practice by some compilers today - they automatically produce a compiler from an interpreter!
There is some question whether Perl could be, because parsing it without running it has some ambiguity. https://www.perlmonks.org/?node_id=663393
[0] https://en.wikipedia.org/wiki/Partial_evaluation#Futamura_pr...
[1] http://blog.sigfpe.com/2009/05/three-projections-of-doctor-f...
People like speaking in the general case. It saves time from enumeating any inconsequential / statistically not relevant exception.
The real problem is people misunderstanding casual discussion absolutes (which mean "for the large majority/for the ones people care about") with mathematical absolutes (i.e. "X is Y for each and every X")
Cpython is interpreted, pypy has JIT, mypyc is compiled. It's the implementation, or even implementation's specific runtime options that decide about things like that, not the language.