5

基本的に実行することによって卵を構築するスクリプトがある場合

python setup.py bdist_egg --exclude-source-files

卵の作成方法を定義するために使用する多くのsetup.pyファイルのsetuptools場合、卵の作成にエラーがあったかどうかを判断する簡単な方法はありますか?

私が最近経験した状況は、モジュールに構文エラーがあったことでした。Setuptoolsは標準エラーにメッセージを吐き出しましたが、壊れたモジュールを省略して、eggを作成し続けました。これは多数の卵を作成するバッチの一部であったため、エラーを見逃し、結果は役に立たなかった。

標準エラーをキャプチャしてそれを解析する以外に、プログラムで卵を作成するときにエラーを検出する方法はありますか?

4

1 に答える 1

5

distutilsこの関数を使用して、py_compile.compile()ソースファイルをコンパイルします。この関数はdoraise引数を取ります。これを設定するとTrue、コンパイルエラーで例外が発生します(デフォルトでは、エラーがstderrに出力されます)。distutilsで呼び出さないでください。コンパイルエラーが発生py_compile.compile()doraise=Trueてもコンパイルは中止されません。

エラーで停止し、リターンコードを確認できるようにするにはsetup.py(エラーの場合はゼロ以外になります)、py_compile.compile()関数にパッチを適用できます。たとえば、あなたのsetup.py

from setuptools import setup
import py_compile

# Replace py_compile.compile with a function that calls it with doraise=True
orig_py_compile = py_compile.compile

def doraise_py_compile(file, cfile=None, dfile=None, doraise=False):
    orig_py_compile(file, cfile=cfile, dfile=dfile, doraise=True)

py_compile.compile = doraise_py_compile

# Usual setup...
于 2010-02-10T21:39:31.490 に答える