源代码。example/example.py
import traceback
def run():
try:
assert 1 == 0
except Exception as e:
log_info = f'Erase failed, exception={type(e).__name__},\n{e},\n{"".join(traceback.format_tb(e.__traceback__))}'
print('*********************')
print(log_info)
print('*********************')
setup.py
from setuptools import setup
from setuptools.extension import Extension
from Cython.Build import cythonize
setup(name='example',
version="0.0",
ext_modules=cythonize(
[
Extension("example.*", ["example/**/*.py"]),
],
build_dir="build",
compiler_directives=dict(always_allow_keywords=True,
language_level='3')))
编译命令 python setup.py build
编译前输出
*********************
Erase failed, exception=AssertionError,
,
File "example/example.py", line 6, in run
assert 1 == 0
*********************
编译后的输出
*********************
Erase failed, exception=AssertionError,
,
File "example/example.py", line 6, in example.example.run
*********************
这是预料之中的,因为在Cython将你的代码移植到C语言并编译本地模块后,就没有Python代码可以参考了。
问题是 https:/github.comcythoncythonissues1755 是有关系的,但也已经开了3年多了。