Cython Extension编译后,Python traceback.format_tb不能完全工作。

问题描述 投票:0回答:1
  • Python版本: 3.7
  • Cython版本:0.29.15

源代码。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

*********************
python cython cythonize
1个回答
1
投票

这是预料之中的,因为在Cython将你的代码移植到C语言并编译本地模块后,就没有Python代码可以参考了。

问题是 https:/github.comcythoncythonissues1755 是有关系的,但也已经开了3年多了。

© www.soinside.com 2019 - 2024. All rights reserved.