2

Pythonスクリプトの場合、特定のPythonバージョンが必要です。Python 2.6のインストールには、python26とpython2.6の両方が含まれています

どちらをシェバンに入れるべきですか?

オプション1:

#!/usr/bin/env python2.6

オプション2:

#!/usr/bin/env python26

編集:はい、プレーンなPythonを使用しない理由があります。大学の一部の環境では、Pythonはpython2.4にリンクされており、私のコードはかなりの2.6機能を使用しています。

4

3 に答える 3

8

シェバンが使用されることを常に保証できるわけではありません(またはユーザーがそのバージョンを使用することさえ保証できません)。

正確に特定のバージョンに制限するべきではありません。少なくとも特定のバージョンを要求するのが最善です(コードがPython 2.6で動作する場合、なぜPython 2.7で動作しないのですか?数か月以内にPython 2.6がインストールされない可能性があります)。

私はシェバンに固執し、/usr/bin/env python代わりに動的にバージョンを検出します。信じられないかもしれませんが、これを行う「通常の」方法は次のとおりです。

import sys
ver = sys.version[:3]

これにより、「2.6」や「2.7」などの3文字の文字列が得られます。最初の文字='2'(Python 3はほとんど互換性がないため、スクリプトを実行しないようにしたい場合)と3番目の文字>='6'であることを確認します。

編集:Petrのコメントを参照してください-代わりに使用してください(またはsys.version_info[0:2]のようなペアを提供します。(2, 6)(2, 7)

于 2011-01-14T08:42:52.627 に答える
3

私のLinuxシステムをチェックしたところ、前者の方が見栄えが良いだけではありpython2.6ません。python26

明確にするために、代わりに条件付きインポートを使用します。私の場合は、OrderedDictPython2.7以降のみが必要です。

try:
    from collections import OrderedDict
except ImportError:
    print("Python 2.7+ is needed for this script.")
    sys.exit(1)
于 2011-01-14T08:38:14.683 に答える
-1

/usr/bin/python代わりに使ってみませんか?それをしない理由はありますか?

まだ持っていない場合は、次のコマンドを使用してリンクを作成できます。

ln -s /usr/bin/python26 /usr/bin/python

これにより、将来Pythonをアップグレードする場合に互換性が確保されます。

于 2011-01-14T08:40:58.163 に答える