Question

Quelle méthode est la plus judicieuse pour importer un module en version python spécifique à la version? Mon cas d’utilisation est que j’écris du code qui sera déployé dans un environnement Python 2.3 et, dans quelques mois, mis à niveau vers Python 2.5. Ceci:

if sys.version_info[:2] >= (2, 5):
    from string import Template
else:
    from our.compat.string import Template

ou ceci

try:
    from string import Template
except ImportError:
    from our.compat.string import Template

Je sais que les deux cas sont également corrects et fonctionnent correctement, mais lequel est préférable?

Était-ce utile?

La solution

Toujours la deuxième solution - vous ne savez jamais ce que les différentes installations Python auront installées. Modèle est un cas spécifique dans lequel cela importe moins, mais lorsque vous testez la capacité au lieu du contrôle de version, vous êtes toujours plus robuste.

C’est ainsi que je fais Testoob prendre en charge Python 2.2 - 2.6: j'essaie d'importer un module de différentes façons travaux. Cela concerne également les bibliothèques tierces.

Voici un cas extrême - supportant différentes options pour qu'ElementTree apparaisse:

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

Autres conseils

Je dirais probablement que le second serait préférable. Parfois, vous pouvez installer un module d’une version plus récente de python dans une version plus ancienne. Par exemple, wsgiref est fourni avec Python 2.5, mais il n’est pas rare qu’il soit installé dans des versions plus anciennes (je pense que cela fonctionnera avec python 2.3 à partir de maintenant).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top