gpt4 book ai didi

python - 使用 setuptools 构建 Egg 时如何以编程方式检测错误?

转载 作者:行者123 更新时间:2023-12-03 01:54:01 25 4
gpt4 key购买 nike

如果我有一个构建鸡蛋的脚本,基本上是通过运行

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

对于许多使用 setuptools 来定义 Egg 构建方式的 setup.py 文件,是否有一种简单的方法来确定构建 Egg 时是否存在任何错误?

我最近遇到的一个情况是模块中存在语法错误。安装工具向标准错误吐出一条消息,但继续创建鸡蛋,忽略损坏的模块。因为这是批量创建多个鸡蛋的一部分,所以错误被遗漏了,结果毫无用处。

除了捕获标准错误并解析它之外,是否有一种方法可以在以编程方式构建鸡蛋时检测错误?

最佳答案

distutils 使用 py_compile.compile() 函数编译源文件。此函数采用 doraise 参数,当设置为 True 时,会引发编译错误异常(默认是将错误打印到 stderr)。 distutils 不会使用 doraise=True 调用 py_compile.compile(),因此编译不会因编译错误而中止。

要在错误时停止并能够检查 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...

关于python - 使用 setuptools 构建 Egg 时如何以编程方式检测错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com