2016-04-26 4 views
0

私は、errnoモジュールを使用し、errnoモジュールが異なるかもしれない複数の環境にわたってインストール可能にしたい、いくつかのオープンソースソフトウェアをPythonでインストールしています。これの良いパターンは何ですか?errnoモジュールでエラーが見つからないようにするPythonの良い方法は何ですか?

ここに私の場合があります。コードはerrno.ETIMEを使用します。ただし、はerrnoのすべてのバージョンに含まれているわけではありません。たとえば、Anaconda for Python 2(Windows版)です。 (それとも、これは私のWindowsインストールに固有のものです?)

は今、その周り一つの方法は、それをチェックし、それがない場合は、それを割り当てることです:

import errno 
if 'ETIME' not in dir(errno): 
    errno.ETIME = 127 

をしかし、それはハック感じています。これにはベストプラクティスがありますか?ありがとう。

答えて

0

グローバル変数を使用しますあなたが機能でこれを置くことができ

ERRNO_ETIME = 127 # Or whatever your default is. 

try: 
    from errno import ETIME 
    ERRNO_ETIME = ETIME # If found, this will just override with correct ETIME if it was found 
except ImportError: 
    pass # ImportError would be thrown if it wasn't found, and you'd just keep your 127 

def get_etime(): 
    try: 
     from errno import ETIME 
     return ETIME 
    except ImportError: 
     return 127 

ERRNO_ETIME = get_etime() 

これは、Djangoがマシンに固有の設定値についてlocal_settings.pysettings.pyをオーバーライドする方法に似ているが、より多くのここに - Django Local Settings

+0

ありがとう、@バロム。どちらも既存のerrno.ETIMEへの参照を変更する必要があります。私はそれらの参照を変更することを避ける最善の方法を探しています。 –

+0

@ user3038796あなたが何を意味しているのかわかりません - あなたは 'errno.ETIME'自体の値を上書きしていません - 別の変数を作成しています。これを避けたいですか? – Bahrom

+0

はい、私は別の変数を作成しないようにして、既存の参照を変更する必要はありません –

関連する問題