質問

Pythonでバージョン固有のモジュールをインポートするのに最も適切な方法はどれですか?私のユースケースは、Python 2.3環境にデプロイされ、数か月以内にPython 2.5にアップグレードされるコードを書いているということです。これ:

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

またはこれ

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

どちらの場合も同様に正しく、正しく動作することを知っていますが、どちらが望ましいですか?

役に立ちましたか?

解決

常に2番目の方法-異なるPythonインストールがどのようにインストールされるかはわかりません。 Templateはそれほど重要ではない特定のケースですが、バージョン管理の代わりに機能をテストすると、常により堅牢になります。

それが Testoob がPython 2.2-2.6をサポートするようにする方法です:それまでさまざまな方法でモジュールをインポートしようとしています動作します。サードパーティのライブラリにも関連しています。

ここに極端な例があります-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

他のヒント

おそらく、2番目の方が好ましいと主張するでしょう。時々、新しいバージョンのpythonから古いモジュールにモジュールをインストールできます。たとえば、wsgirefにはPython 2.5が付属していますが、古いバージョンにインストールされることは珍しいことではありません(python 2.3以降でも動作すると思います)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top