Man*_*gia 14 python compilation package cython
我有几个python模块(组织成包),它们相互依赖.例如
让我们假设开发应用程序的相关接口在Module4中,我想使用cython生成Module4.so.如果我以天真的方式继续,我得到一个扩展Module4.so我可以导入但扩展依赖于 Module1,Module2,Module3 的python源代码.
有没有一种方法可以编译,以便Module1,Module2,Module3被编译并链接到Module4?我想避免手动完成所有操作,例如首先编译Module1.so然后在Module2中更改import声明,以便导入Module1.so而不是Module1.py,然后将Module2编译成Module2.so等等....
谢谢!
Cza*_*zak 10
编辑.前两个选项是指Cython的特定代码,我错过的是关于纯python模块的问题,因此选项3是解决方案.
有几个选择:
1.请参阅"如何在程序包中创建模块的层次结构":https: //github.com/cython/cython/wiki/PackageHierarchy
2.我更喜欢"包含"声明: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)]
)
Run Code Online (Sandbox Code Playgroud)
4.更有效的汇编 - 见这里.
setup (
name = 'MyProject',
ext_modules = cythonize(["*.pyx"]),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12415 次 |
| 最近记录: |