14

バージョン固有のモジュールをPythonにインポートするのに最も意味のある方法はどれですか?私のユースケースは、Python 2.3環境にデプロイされ、数か月以内にPython2.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

どちらの場合も同じように正しく、正しく機能することを私は知っていますが、どちらが望ましいですか?

4

2 に答える 2

28

常に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
于 2008-12-04T23:57:33.737 に答える
2

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

于 2008-12-04T23:40:20.840 に答える