2010-11-28 43 views
6

是否有可能在cython中導入任意模塊,將它們編譯爲共享目標文件,然後在python 3.1中使用它們?使用cython將模塊移植到python 3.1

原因是,我正在編寫程序「blender」的擴展,它有一個內部的python 3.1解釋器。但我也想利用一些python模塊,這些模塊並沒有移植到3.x,但是我在我的腦海裏(也包括其他一些庫)有專門的numpy。我有一個模塊,它使用numpy。由於我想重新分配該模塊,因此我不希望人們在他們的機器上安裝numpy。那會有用嗎?

+0

Cython用於編寫CPython擴展模塊,而不是用於使應用程序獨立。使用[cx_Freeze](http://cx-freeze.sourceforge.net/)。另外,這與Python 3具體做什麼? – delnan 2010-11-28 14:36:01

回答

4

原則上,我相信這是可能的。 Cython通過將類Python代碼翻譯爲C代碼來工作。該代碼可以爲Python 2或Python 3編譯(它使用C預處理器語句來更改使用的代碼)。

壞消息是,它只能用於Cython可以翻譯的Python類代碼編寫的擴展。你不能在用C編寫的擴展上使用Cython,比如Numpy。

好消息是,至少對於Numpy來說,你不應該這麼做。由於version 1.5,Numpy支持Python 3.有一個可用於Windows的二進制文件;在其他系統上,您可能必須自己研究如何編譯代碼。

-2

檢查你的Python文檔,「Python/C API參考手冊」一節詳細描述瞭如何去做。

編輯: 所以你想要的是將2.x庫移植到3.x.這是一件很大的工作。 如果您希望的解決方案存在。現在Python 2.x應該已經被淘汰了。 當然有2to3工具。但是用C編寫的Python庫不適用於這種方式。因此,您可以按照「Python/C API參考手冊」中的說明將lib移植到3.x或等待。