Diferencia entre los ejecutables de python3 y python3m

116

¿Cuál es la diferencia entre los ejecutables /usr/bin/python3y /usr/bin/python3m?

Los estoy observando en Ubuntu 13.04, pero Google sugiere que también existen en otras distribuciones.

Los dos archivos tienen el mismo md5sum, pero no parecen ser enlaces simbólicos o enlaces duros; los dos archivos tienen diferentes números de inodo devueltos por ls -liy la prueba find -xdev -samefile /usr/bin/python3.3no devuelve ningún otro archivo.

Alguien hizo una pregunta similar en AskUbuntu , pero quería saber más sobre la diferencia entre los dos archivos.

James Mishra
fuente
11
Esto se cubre en el PEP mencionado en la respuesta a la pregunta vinculada.
chepner
¡Ah gracias! Antes de escribir esta pregunta, leí las primeras líneas del PEP, pero era demasiado perezoso para leerlo todo ...
James Mishra

Respuestas:

117

El mérito de esto es para Chepner por señalar que ya tenía el enlace a la solución.

Las implementaciones de Python PUEDEN incluir indicadores adicionales en la etiqueta del nombre del archivo, según corresponda. Por ejemplo, en los sistemas POSIX, estas banderas también contribuirán al nombre del archivo:

--con-pydebug (bandera: d)

--con-pymalloc (bandera: m)

--with-wide-Unicode (bandera: u)

a través de PEP 3149 .

Con respecto a la mbandera específicamente, esto es lo que es Pymalloc:

Pymalloc, un asignador de objetos especializado escrito por Vladimir Marangozov, fue una característica agregada a Python 2.1. Pymalloc está destinado a ser más rápido que el sistema malloc () y tener menos sobrecarga de memoria para los patrones de asignación típicos de los programas Python. El asignador usa la función malloc () de C para obtener grandes grupos de memoria y luego satisface las solicitudes de memoria más pequeñas de estos grupos.

a través de What's New in Python 2.3

Finalmente, los dos archivos pueden estar vinculados en algunos sistemas. Si bien los dos archivos tienen diferentes números de inodo en mi sistema Ubuntu 13.04 (por lo tanto, son archivos diferentes), una publicación de comp.lang.python de hace dos años muestra que alguna vez estuvieron vinculados.

James Mishra
fuente