Python 如何从另一个文件中包含cython代码

Python 如何从另一个文件中包含cython代码,python,cython,Python,Cython,我希望包含一个文件中的代码,以便在另一个文件中使用,就像导入一个模块一样,但我不希望为了这样做而编译第一个文件 我的项目管道如下所示: 文件A将扩展类型对象定义为: cdef class Thing(object): ... 这类文件将有许多不同的版本,每个版本定义一个名为“Thing”的类 文件B使用类“Thing”完成所有类型的整洁工作,但不在文件B中定义它,因为文件B能够对文件A中定义的称为“Thing”的许多不同类型的对象执行常规操作 e、 g 基本上。我可以将代码从文件B复制

我希望包含一个文件中的代码,以便在另一个文件中使用,就像导入一个模块一样,但我不希望为了这样做而编译第一个文件

我的项目管道如下所示:

文件A将扩展类型对象定义为:

cdef class Thing(object):
    ...
这类文件将有许多不同的版本,每个版本定义一个名为“Thing”的类

文件B使用类“Thing”完成所有类型的整洁工作,但不在文件B中定义它,因为文件B能够对文件A中定义的称为“Thing”的许多不同类型的对象执行常规操作

e、 g

基本上。我可以将代码从文件B复制粘贴到每个文件A中,它将正常工作。但是我想更好地组织我的项目,这两种类型的文件执行非常不同的任务,我想混合和匹配这些任务

有什么建议吗

此外,能够做这样的事情也很好:

在文件A中:

ctypedef ... newtype
在文件B中:

cdef newtype...
如果有帮助,新类型将非常类似于double,但可能包含更多信息。我将重载比较运算符,==,等等,但我希望newtype比double包含更多信息

编辑:我将添加更多信息,因为大多数读者似乎觉得这个问题比实际问题更微不足道。

我有几个非常长的程序,文件都可以分为两个不同的部分,每个部分的后半部分在代码上都是相同的,但它们都使用第一部分中定义的类型。第二部分不能独立存在,因为它依赖于第一部分中的ctypedef语句

所以我想要的是: 文件1:

文件2:

stuff(Thing one, Thing two)
文件3:

import file1
import file2
并编译文件3,其中文件1和2未编译

如果我创建file1和file2.pxd文件并使用cimport,我会收到关于不允许使用
def
语句以及所有
cdef
语句必须内联的投诉。而如果将import与.py文件一起使用,编译器会抱怨
file1
不是cimported模块


为什么cython坚持我的头文件的格式要比我的主文件严格得多?我基本上是想避免将file2复制粘贴到我的主文件中,编写一次并导入它会很好,但我似乎找不到任何文档可以帮助我完成这项工作。

正如DavidW在评论中提到的,我可能要找的是

include "filename.pxi"

指挥部。这表明计划过于草率。最好的编码实践是创建.pxd和.pyx文件以扩充主.pyx文件。

这实际上都在文档中:我不同意,没有文件A中的信息,我无法编译文件B,我想做的是:编写文件A和B,将它们导入文件C并编译。听起来像是一项简单的任务,但我所做的一切都不起作用。我对问题进行了编辑,以便更具体地解释为什么文档中没有解释在我的情况下要做什么。我的一个问题似乎在任何地方都没有得到回答:在C中,有一些头文件在包含到更广泛的项目中之前不需要编译。是否有一个Cython等效物?如果我的pyx文件没有包含其他头文件就无法自行编译,那么我可以像在C中一样将它们导入到另一个项目中吗?听起来你想要的只是一个文本包含-这不是真正推荐的(这是一种老方法),但它可能适合你的使用
import file1
import file2
include "filename.pxi"