¿Cuál es el orden de clasificación estándar para los números de versión / versión de Python?
-
19-09-2019 - |
Pregunta
pip
y easy_install
de Python siguen algunas reglas para ordenar los paquetes por sus números de versión. ¿Cuáles son las reglas para la numeración de las versiones beta / release / corrección de errores por lo que estas herramientas se sabe que es el más reciente?
Solución
Este es un punto delicado para muchas personas. setuptools
y easy_install
tienen algunas reglas bastante extraño en un intento de jugar bien con todo el mundo. Usted puede leer las reglas completas en el método de setuptools
parse_version
, pero aquí está el resumen:
-
Los números de versión se rompen por puntos en una tupla de que muchos segmentos. 4.5.6.7 se analiza en una tupla igual a
("4", "5", "6", "7")
. -
ceros entre guiones o caracteres alfanuméricos se suprimen. 2.4.0 es la misma que 2,4; 4.2.05 es la misma que 2.4.5.
-
partes alfanuméricos se downcased. 2.4.a5 es igual a 2.4.A5.
-
Cuerdas que vienen antes "final" alfabéticamente se supone que son versiones de liberación pre, por lo 2.4.5b viene antes, y no después, 2.4.5.
-
Finalmente, "pre", "vista previa", y "rc" son tratados como si fueran "c". La palabra "dev" se sustituye por "@", por lo que se trata antes que nada con la misma versión. Es decir,
x.y.z-dev
está garantizada para llegar antes que cualquier otra versiónx.y.z
.
Hay una serie de propuestas para organizar las cosas un poco más, de los cuales el más popular es probablemente PEP 386 .
Otros consejos
Vea la documentación o buscar en la fuente:. cadena de documentación de la función pkg_resources.py parse_version ()
Utilice 1.0a1 y 1.0b2 antes de 1.0.
El novedoso estándar:
- http: //www.python. org / dev / PEP / PEP-0386 / # the-new-versiones algoritmo
- http: // tarekziade. wordpress.com/2009/11/18/distutils-and-distribute-status-part-1/
- http://bitbucket.org/tarek/distutilsversion/
setuptools actuales: http://peak.telecommunity.com/DevCenter/setuptools# especificando-su-proyecto-s-versión