Python 验证编译扩展类型的兼容性,并将其与cdef一起使用 常设问题: 为什么Cython编译中的其他错误指向特定的错误行,而这不指向 更新前:

Python 验证编译扩展类型的兼容性,并将其与cdef一起使用 常设问题: 为什么Cython编译中的其他错误指向特定的错误行,而这不指向 更新前:,python,compiler-errors,cython,Python,Compiler Errors,Cython,由于编译扩展类型很困难,正如下面的“不会编译”链接中所引用的,人们认为AssertionError与扩展类型相关(在它们的实例化被传输到主pyx文件之后) 有人说,“如果您确实想要扩展类型,并且想要在代码中声明它们的类型,那么您需要在.pxd文件中声明它们的C属性。” 如果在本例中是这样的话,问题是在使用pxd文件时,pyx文件对我来说是错误的。在一个pyx文件中编译扩展类型时没有错误,但是当导入扩展类型后使用扩展类型时,我收到错误extTypeName不是类型标识符 在中我被告知可以在pyx文

由于编译扩展类型很困难,正如下面的“不会编译”链接中所引用的,人们认为AssertionError与扩展类型相关(在它们的实例化被传输到主pyx文件之后)

有人说,“如果您确实想要扩展类型,并且想要在代码中声明它们的类型,那么您需要在.pxd文件中声明它们的C属性。”

如果在本例中是这样的话,问题是在使用pxd文件时,pyx文件对我来说是错误的。在一个pyx文件中编译扩展类型时没有错误,但是当导入扩展类型后使用扩展类型时,我收到错误
extTypeName不是类型标识符

在中我被告知可以在pyx文件中定义扩展类型,主函数使用它们。执行此操作时,我收到一个不知道如何跟踪的错误(
AssertionError:用于索引的意外类型int和基类型tuple对象
)。完整的回溯发布在下面


难以追踪的错误 尝试使用同一pyx文件中声明的扩展类型进行编译时的回溯(我不确定这是否是问题的根源):

回溯(最近一次呼叫最后一次):
文件“setup.py”,第37行,在
ext_modules=[扩展名(“HintToCRdict”,“HintToCRdict.pyx”)]
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py”,第151行,在安装程序中
dist.run_命令()
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py”,第953行,在run_命令中
self.run_命令(cmd)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py”,第972行,在run_命令中
cmd_obj.run()
文件“/Library/Python/2.7/site packages/Cython/Distutils/build_ext.py”,第164行,正在运行
_构建外部。构建外部。运行(自身)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build_ext.py”,第337行,运行中
self.build_扩展()
文件“/Library/Python/2.7/site packages/Cython/Distutils/build\u ext.py”,第171行,内置扩展名
ext.sources=self.cython\u源(ext.sources,ext)
文件“/Library/Python/2.7/site packages/Cython/Distutils/build\u ext.py”,第324行,在Cython\u源代码中
完整模块名称=模块名称)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Main.py”,第688行,在compile中
返回compile\u single(源代码、选项、完整模块名称)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Main.py”,第638行,在compile\u single中
返回运行管道(源、选项、完整模块名称)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Main.py”,第495行,在运行管道中
err,enddata=Pipeline.run_Pipeline(管道,源)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Pipeline.py”,第365行,在运行管道中
数据=相位(数据)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Pipeline.py”,第53行,在generate\u pyx\u code\u阶段
模块\节点。过程\实现(选项、结果)
文件“/Library/Python/2.7/site packages/Cython/Compiler/ModuleNode.py”,第131行,正在执行中
self.generate_c_代码(环境、选项、结果)
文件“/Library/Python/2.7/site packages/Cython/Compiler/ModuleNode.py”,第359行,在generate\u c\u代码中
self.body.generate_function_定义(环境、代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第435行,在生成函数定义中
stat.generate_函数_定义(环境、代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第1944行,在generate\u function\u定义中
自生成函数体(环境、代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第1698行,在generate_function_body中
self.body.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第441行,在生成执行代码中
stat.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第441行,在生成执行代码中
stat.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第5851行,在生成执行代码中
if_子句.generate_execution_code(代码,end_标签,is_last=i==last)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第5894行,在生成执行代码中
self.body.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第441行,在生成执行代码中
stat.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/UtilNodes.py”,第321行,在生成执行代码中
self.body.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第6402行,在生成执行代码中
self.body.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第441行,在生成执行代码中
stat.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/UtilNodes.py”,第321行,在生成执行代码中
self.body.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第6402行,在生成执行代码中
self.body.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第441行,在生成执行代码中
stat.generate_execution_code(代码)
文件“/Library/Python/2.7/site packages/Cython/Compiler/Nodes.py”,第5851行,在生成执行代码中
if_子句.generate_execution_code(代码,end_标签,is_last=i==last)
文件“/Library/Python/2.7/si
Traceback (most recent call last):
  File "setup.py", line 37, in <module>
    ext_modules = [Extension("HintToCRdict", ["HintToCRdict.pyx"])]
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/Library/Python/2.7/site-packages/Cython/Distutils/build_ext.py", line 164, in run
    _build_ext.build_ext.run(self)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build_ext.py", line 337, in run
    self.build_extensions()
  File "/Library/Python/2.7/site-packages/Cython/Distutils/build_ext.py", line 171, in build_extensions
    ext.sources = self.cython_sources(ext.sources, ext)
  File "/Library/Python/2.7/site-packages/Cython/Distutils/build_ext.py", line 324, in cython_sources
    full_module_name=module_name)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Main.py", line 688, in compile
    return compile_single(source, options, full_module_name)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Main.py", line 638, in compile_single
    return run_pipeline(source, options, full_module_name)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Main.py", line 495, in run_pipeline
    err, enddata = Pipeline.run_pipeline(pipeline, source)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Pipeline.py", line 365, in run_pipeline
    data = phase(data)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Pipeline.py", line 53, in generate_pyx_code_stage
    module_node.process_implementation(options, result)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/ModuleNode.py", line 131, in process_implementation
    self.generate_c_code(env, options, result)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/ModuleNode.py", line 359, in generate_c_code
    self.body.generate_function_definitions(env, code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 435, in generate_function_definitions
    stat.generate_function_definitions(env, code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 1944, in generate_function_definitions
    self.generate_function_body(env, code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 1698, in generate_function_body
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 5851, in generate_execution_code
    if_clause.generate_execution_code(code, end_label, is_last=i == last)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 5894, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/UtilNodes.py", line 321, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 6402, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/UtilNodes.py", line 321, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 6402, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 5851, in generate_execution_code
    if_clause.generate_execution_code(code, end_label, is_last=i == last)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 5894, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/UtilNodes.py", line 89, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 6015, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 6192, in generate_execution_code
    self.body.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 441, in generate_execution_code
    stat.generate_execution_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 4786, in generate_execution_code
    self.generate_rhs_evaluation_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/Nodes.py", line 5073, in generate_rhs_evaluation_code
    self.rhs.generate_evaluation_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/ExprNodes.py", line 699, in generate_evaluation_code
    self.generate_subexpr_evaluation_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/ExprNodes.py", line 714, in generate_subexpr_evaluation_code
    node.generate_evaluation_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/ExprNodes.py", line 699, in generate_evaluation_code
    self.generate_subexpr_evaluation_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/ExprNodes.py", line 714, in generate_subexpr_evaluation_code
    node.generate_evaluation_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/ExprNodes.py", line 705, in generate_evaluation_code
    self.generate_result_code(code)
  File "/Library/Python/2.7/site-packages/Cython/Compiler/ExprNodes.py", line 3737, in generate_result_code
    self.type, self.base.type)
AssertionError: unexpected type int and base type tuple object for indexing
cdef:
    tuple curIRs
for deriv1 in xrange(len(L1)):
    for deriv2 in xrange(len(L2)):
        curIRs = (deriv2, deriv1)
d1[ix] = (curIRs[0], curIRs[1])