setuptoolsので卵を構築するときにどのように私はプログラム的にエラーを検出することができますか?

StackOverflow https://stackoverflow.com/questions/2230843

質問

私は基本的に実行することによって、卵を構築するスクリプトを持っている場合は、

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

卵を構築する方法を定義するためにsetuptoolsを使用setup.pyファイル数の卵を構築する際に何らかのエラーがあったかどうかを判断する簡単な方法はありますか?

私は最近持っていた状況は、モジュールに構文エラーがあったということでした。 setuptoolsのは、標準エラーにメッセージを吐き出しますが、モジュールを壊れたために省略して、卵を作成するために続けました。これは卵の数を作成するバッチの一部であったため、エラーが逃し、結果は無用だった。

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

役に立ちましたか?

解決

distutilsソースファイルをコンパイルするpy_compile.compile()関数を使用します。この関数は、doraiseに設定するとコンパイルエラー(デフォルトは標準エラー出力にエラーを印刷することである)で例外を発生させること、True引数を取ります。 distutilspy_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...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top