我有几个Python模块(组织到包),这依赖于对方 。 例如
- 模块1
- 模块2:进口模块1
- 单词数
- 单词数:进口单词数,模块2,模块1
假设相关的接口来开发应用程序是在单词数和我想要生成Module4.so使用用Cython。 如果我用简单的方式进行,我得到一个扩展Module4.so我可以导入但扩展依赖于模块1,单词数,单词数的Python源代码 。
有没有办法来编译,这样也模块1,单词数,单词数被编译并链接到单词数? 我想避免手工做的一切 ,例如,首先编译Module1.so然后改变进口报关的单词数,从而导入Module1.so而非Module1.py,然后编译单词数为Module2.so等等....
谢谢!
编辑。 前两个选项是指用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)]
)
4.比较有效的编译-见这里 。
setup (
name = 'MyProject',
ext_modules = cythonize(["*.pyx"]),
)
文章来源: How to compile and link multiple python modules (or packages) using cython?