para - La mejor forma de importar módulos de Python específicos de la versión
modulos y paquetes python (2)
Probablemente diría que el segundo sería preferible. A veces, puedes instalar un módulo de una versión más nueva de python en una versión anterior. Por ejemplo, wsgiref viene con Python 2.5, pero no es del todo raro que se instale en versiones anteriores (creo que funcionará con Python 2.3).
¿Qué método tiene más sentido para importar un módulo en python que sea específico de la versión? Mi caso de uso es que estoy escribiendo código que se implementará en un entorno de python 2.3 y en pocos meses se actualizará a python 2.5. Esta:
if sys.version_info[:2] >= (2, 5):
from string import Template
else:
from our.compat.string import Template
o esto
try:
from string import Template
except ImportError:
from our.compat.string import Template
Sé que cualquiera de los casos es igualmente correcto y funciona correctamente, pero ¿cuál es preferible?
Siempre de la segunda manera: nunca se sabe qué instalaciones diferentes de Python habrá instalado. Template
es un caso específico en el que importa menos, pero cuando pruebas la capacidad en lugar del control de versiones, siempre eres más robusto.
Así es como hago que Testoob soporte Python 2.2 - 2.6: Intento importar un módulo de diferentes maneras hasta que funcione. También es relevante para bibliotecas de terceros.
Este es un caso extremo: admite diferentes opciones para que aparezca ElementTree:
try: import elementtree.ElementTree as ET
except ImportError:
try: import cElementTree as ET
except ImportError:
try: import lxml.etree as ET
except ImportError:
import xml.etree.ElementTree as ET # Python 2.5 and up