【发布时间】:2010-04-15 16:26:37
【问题描述】:
在 Cython 中,通常的 raise 关键字会发出 C 代码,其中包含对 Cython 源文件的行和名称的引用,从而可以生成有用的错误消息。
但是,我没有看到任何警告。简单地调用warnings.warn 会使解释器对警告的来源感到困惑。如果 pyx 文件有类似于 __LINE__ 宏的东西,我可以使用 PyErr_WarnExplicit。
是否有标准的方式发出警告或标准的方式来引用 Cython 中的 pyx 行号?
更新
这个问题已经开放了几个月,所以我只能假设 Cython 目前没有发出警告的好方法。我将在此处保持打开状态,以防有人找到方法/提交补丁以使其正常工作。
【问题讨论】:
-
警告是针对您程序的用户的。为什么他们需要行号?
-
@Tobias - 这样当他们向您发送警告消息的输出时,很容易看到它是从哪里发出的。此外,使用图书馆的人的集合通常包括确实(或愿意)维护所述图书馆的人。无论用户查看行号是否有用,解释器都会在收到警告时将其与来自的模块一起显示。如果你在 Cython 中使用
warnings.warn,那么报告的模块和行都是错误的,这在美学上对我来说是不愉快的。 -
@geowa4 - Cython 与 CPython 不同。见:cython.org
-
哎呀,对不起。我刚刚听到很多人谈论 cython 意思是 cpython。他们使用它来区分标准 impl 和 jython。该死的命名。