setuptoolsので卵を構築するときにどのように私はプログラム的にエラーを検出することができますか?
-
19-09-2019 - |
質問
私は基本的に実行することによって、卵を構築するスクリプトを持っている場合は、
python setup.py bdist_egg --exclude-source-files
卵を構築する方法を定義するためにsetuptools
を使用setup.pyファイル数の卵を構築する際に何らかのエラーがあったかどうかを判断する簡単な方法はありますか?
私は最近持っていた状況は、モジュールに構文エラーがあったということでした。 setuptoolsのは、標準エラーにメッセージを吐き出しますが、モジュールを壊れたために省略して、卵を作成するために続けました。これは卵の数を作成するバッチの一部であったため、エラーが逃し、結果は無用だった。
単に標準エラーをキャプチャし、それを解析する以外のプログラムで卵を構築するときにエラーを検出する方法は、ありますか?
解決
distutils
ソースファイルをコンパイルするpy_compile.compile()
関数を使用します。この関数は、doraise
に設定するとコンパイルエラー(デフォルトは標準エラー出力にエラーを印刷することである)で例外を発生させること、True
引数を取ります。 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...
所属していません StackOverflow