如何使用cython编译和链接多个python模块(或程序包)?

我有几个python模块(组织成包),它们 。例如

  • 模块1
  • Module2:导入Module1
  • 模块3
  • Module4:导入Module3,Module 2,Module 1

假设开发应用程序的相关接口在Module4中,而我想使用 生成

。如果我以幼稚的方式进行操作,则会得到扩展Module4.so,但可以导入该扩展, 该扩展

Module1,Module2,Module3 。

有没有一种方法可以编译Module1,Module2,Module3 到Module4?我想

,例如,首先编译Module1.so,然后在Module2中更改导入声明,以便导入Module1.so而不是Module1.py,然后将Module2编译为Module2.so,依此类推。

谢谢!

回答:

编辑。前两个选项涉及Cython的特定代码,我想念的是关于纯python模块的问题,因此选项3是解决方案。

有几种选择:

1.参见以下“如何在包中创建模块层次结构”:https

:

//github.com/cython/cython/wiki/PackageHierarchy

2.我更喜欢“

include”语句:http :

//docs.cython.org/src/userguide/language_basics.html#the-include-

statement我有很多.pyx文件,它们都包含在main.pyx中,全部集中在一个名称空间中。结果是一个很大的模块:http

:

//code.google.com/p/cefpython/source/browse/cefpython.pyx

3.您可以使用安装程序通过添加多个“扩展”来一次编译所有模块:

setup(

cmdclass = {'build_ext': build_ext},

ext_modules = [Extension("example", sourcefiles), Extension("example2", sourcefiles2), Extension("example3", sourcefiles3)]

)

4.更有效的编译-请参见此处。

setup (

name = 'MyProject',

ext_modules = cythonize(["*.pyx"]),

)

以上是 如何使用cython编译和链接多个python模块(或程序包)? 的全部内容, 来源链接: utcz.com/qa/411293.html

回到顶部