2

私は、数年後に RHEL6 にアップグレードされる可能性のある RHEL5 マシンを主な対象とする新しい python プロジェクトを職場で開始しています。Python 2.4 が RHEL5 の標準であり、システム管理者が必要以上にサポートしないことを考えると、ローカル リポジトリで Python 2.6 を取得するには、ある程度の説得力が必要です。Python 2.4 で問題なく動作するように見えますが、そのような古いバージョンとの 100% 互換性を目指してゼロからプロジェクトを作成することに不安を感じています。

このプロジェクトを 2.6 で完了させるために戦うべきですか、それとも RHEL5 への最もスムーズな準拠を目指すべきですか? 2.4 に固執する場合に注意すべき落とし穴は何ですか?

参考までに: 私は間違いなく sqlite と pygtk を使用します。

4

5 に答える 5

2

あなたの最善の策は、おそらく 2.4 に固執し、後の Python が必要とするすべての機能を備えた time_machine モジュールを用意することです。たとえば、プロパティが最初に登場したとき、次のようなことをしなければなりませんでした:

def _get_prop(self):
    return self._prop
def _set_prop(self, value):
    self._prop = value
prop = property(_get_prop, _set_prop)

しかし 2.6 ではプロパティが拡張され、デコレータ自体にもなったため、次のように記述できます。

@property
def prop(self):
    return self._prop
@prop.setter
def prop(self, value):
    self._prop = value

これは、クラスの名前空間にぶら下がっている冗長な関数が少なくなることを意味します。

私はたまたまその機能が気に入っているので、time_machine.py のコードは次のようになります。

# 2.6+ property for 2.5-
if sys.version_info[:2] < (2, 6):
    # define our own property type
    class property():
        "2.6 properties for 2.5-"
        def __init__(self, fget=None, fset=None, fdel=None, doc=None):  ...
        def __call__(self, func):  ...
        def __get__(self, obj, objtype=None):  ...
        def __set__(self, obj, value):  ...
        def __delete__(self, obj):  ...
        def setter(self, func):  ...
        def deleter(self, func):  ...

これの本当に素晴らしい点は、新しい機能を示すために Python の同等物がよく使用されるため、自分でコードを記述する必要さえないことです。

于 2011-10-08T07:05:51.460 に答える
2

どの Python に何が入っていますか?

于 2011-10-08T00:37:27.977 に答える
1

私の主な懸念はサードパーティのライブラリです。ほとんどのライブラリ作成者は 2.7 を実行しており、3.X について考えているため、古いバージョンでのみ現れるバグは優先度が低くなる (または完全に無視される) 可能性があります。 Python自体に関係することで、作成者はライブラリのせいではないと簡単に言うことができます)

于 2011-10-08T02:01:29.993 に答える
1

2.52.62.7の新機能。また、特定の機能が追加されたときの標準ライブラリ ドキュメント。たとえば、文字列の書式設定は 2.6 で追加されました。ただし、サードパーティのライブラリのサポートは危険です。

于 2011-10-08T00:36:16.203 に答える
0

幸運なことに、前回実際のPython作業を行ったときは、Python 1.5.2を目指す必要がありました。これは、対象とするRHELシステムで利用できる最大公約数であったためです。うまくいけば、これらのシステムはすべて、今では新しいツールに移行しています。

古風に感じるかもしれませんが、それが現在のエコシステムです。ソフトウェアをターゲット顧客に簡単に展開できるようにするか、無視してください。趣味の展開は非常に簡単で、新しいシステムをあちこちで実行しますが、多くの場合、料金を支払うことはありません。

于 2011-10-08T00:39:34.897 に答える