如何使用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