バージョン固有のPythonモジュールをインポートする最良の方法
-
19-08-2019 - |
質問
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以降でも動作すると思います)。
所属していません StackOverflow