distutils使用该py_compile.compile()函数编译源文件。这个函数有一个doraise参数,当设置为True编译错误时会引发异常(默认是将错误打印到 stderr)。distutils不要调用py_compile.compile()with 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...