使用cython将模块移植到python 3.1

使用cython将模块移植到python 3.1,python,c,module,numpy,cython,Python,C,Module,Numpy,Cython,是否可以在cython中导入任意模块,将它们编译为共享对象文件,然后在python 3.1中使用它们 原因是,我正在为程序“blender”编写一个扩展,它有一个内部python 3.1解释器。但我还想使用一些尚未移植到3.x的python模块 在我的脑海中,我有特别的numpy(但也有一些其他的库)。我有一个模块,它使用numpy。因为我想重新发布这个模块,所以我不想让人们在他们的机器上安装numpy。这样行吗 查看您的Python文档,“Python/CAPI参考手册”一节详细介绍了如何执行

是否可以在cython中导入任意模块,将它们编译为共享对象文件,然后在python 3.1中使用它们

原因是,我正在为程序“blender”编写一个扩展,它有一个内部python 3.1解释器。但我还想使用一些尚未移植到3.x的python模块


在我的脑海中,我有特别的numpy(但也有一些其他的库)。我有一个模块,它使用numpy。因为我想重新发布这个模块,所以我不想让人们在他们的机器上安装numpy。这样行吗

查看您的Python文档,“Python/CAPI参考手册”一节详细介绍了如何执行此操作

编辑: 因此,您需要将2.x库移植到3.x。这是一项艰巨的工作。 如果您希望的解决方案存在。Python2.x现在应该已经被淘汰了。 当然有一个2to3工具。但是C编写的Python库不适用于这种情况


因此,您可以按照“Python/CAPI参考手册”中的说明将lib移植到3.x,或者等待。

原则上,我相信这是可能的。Cython的工作原理是将类似Python的代码转换为C代码。该代码可以为Python2或Python3编译(它使用C预处理器语句来更改使用的代码)

坏消息是,它只适用于用Cython可以翻译的类似Python的代码编写的扩展。不能在用C编写的扩展上使用Cython,比如Numpy


好消息是,至少对Numpy来说,你不必这么做。因为,Numpy支持python3。有一个可用于Windows的二进制文件;在其他系统上,您可能需要自己解决如何编译代码。

Cython用于编写CPython扩展模块,而不是使应用程序独立。用这个。另外,这与Python3有什么特别的关系?我不能使用cx_Freeze,因为我只想将模块与嵌入式Python版本一起重新发布。不是一个可执行文件。哦,我忘了:那个有内部python解释器的应用程序使用Python3.1(它的blender(www.blenderorg))。有些库仅在Python2.xx中可用,因此通过编译它们使它们对Python3可用是很酷的。。。