36

What's the difference between python 3.3 and 3.3m

I'm using Ubuntu 13.04 Raring and on my system I have python2.7 and python3.3 (I know the differences between 2 and 3)

But I also have installed python3.3m (and it's not a symlink to 3.3). So what does the m stand for?

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
willix
  • 686
  • 1
  • 6
  • 13
  • 3
    "more better"? ... is this really a programming question? – Tim Seguine Dec 19 '13 at 20:18
  • what does `apt-cache show` say? – behzad.nouri Dec 19 '13 at 20:19
  • Seems to me like something to do with python module development. That's a guess though. Don't quote me. – Tim Seguine Dec 19 '13 at 20:21
  • 10
    This shouldn't have been closed. It is actually a relevant distinction! The `m` suffix means specifically a "pymalloc" build of Python, and it may mean that the ABI of `3.3` on your platform is not the same as the ABI of `3.3m`; extension modules must be built for the specific ABI in question. This means that `3.3` extension modules won't work with `3.3m` and vice-versa. The change to tag Python versions was proposed and accepted as [PEP-3149: ABI version tagged .so files](http://legacy.python.org/dev/peps/pep-3149/). – nneonneo Apr 05 '14 at 01:15
  • @nneonneo why not make this an answer? – kojiro Apr 05 '14 at 02:25
  • @kojiro: Until recently, the question was closed. I will convert it to an answer now. – nneonneo Apr 05 '14 at 02:30

2 Answers2

36

The m suffix means specifically a "pymalloc" build of Python, and it may mean that the ABI of 3.3 on your platform is not the same as the ABI of 3.3m. Extension modules must be built for the specific ABI in question. This means that 3.3 extension modules won't work with 3.3m and vice-versa.

The change to tag Python versions was proposed and accepted as PEP-3149: ABI version tagged .so files.

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
nneonneo
  • 171,345
  • 36
  • 312
  • 383
  • And obviously this doesn't matter if you are dealing with pure-python modules. Thanks for the update, I was wondering if I will have to add yet another version of python to run my tests against. Still, as I am doing only pure-python modules, I will not have to care about the `m`-ones. – sorin Jul 15 '15 at 12:15
-6

python3 is a symbolic link to python3.3

python3.3 is a hard link to python3.3m


And as @nneonneo 's answer indicating, The m suffix means specifically a "pymalloc" build of Python. Then the links do what they do.

Timothy
  • 4,467
  • 5
  • 28
  • 51