0

Python の例外でデリケートな問題が発生しています。私のソフトウェアは現在複数のプラットフォームで実行されていますが、バージョンの変更が大きな労力になるクラスター上にあるため、py2.5 との互換性を維持することを目指しています。

(debian) システムの 1 つが最近 2.6 から 2.7 に更新され、一部のコードが基盤となる C 部分から奇妙な例外をスローします。ただし、これは以前は決してありませんでしたし、私の mac 2.7 でもそうではありません -> コードにバグはなく、新しいライブラリの 1 つにバグがあります。

2.7 の例外の扱い方を考えましたが、残念ながら例外処理は 2.5 と互換性がありません。

「プリプロセッサ コマンド - C スタイル」のようなものを実行する方法はありますか?

if interpreter.version == 2.5:
foo() 
elif interpreter.version == 2.7:
bar()

?

乾杯、エル

添付例:

try:                                                                                                     
    foo()
except RuntimeError , (errorNumber,errorString):
    print 'a'
    #ok with 2.5, 2.7 however throws exceptions

try:                                                                                                     
    foo()
except RuntimeError as e:
    print 'a'
#ok with 2.7, 2.5 does not understand this
4

2 に答える 2

1

You can write two different try...except for two different versions basically for those mis match exception in two different versions.

import sys

if sys.version_info[:2] == (2, 7):
    try:
        pass
    except:
        # Use 2.7 compatible exception
        pass
elif sys.version_info[:2] == (2, 5):
    try:
        pass
    except:
        # Use 2.5 compatible exception
        pass
于 2013-07-01T19:36:13.703 に答える