2012-01-04 41 views
8

我注意到幾個成熟的Python庫對於大多數體系結構(Win32/Win-amd64/MacOS)和Python的版本都有預編譯版本。在不同環境下交叉編譯擴展的標準方式是什麼?紅酒?虛擬機?人羣採購?如何爲不同的操作系統/版本的Python編譯Python C/C++擴展?

+2

您可以在[官方Python文檔](http://docs.python.org/distutils/builtdist.html)中找到關於此的一些有限信息。 – 2012-01-04 04:22:37

+0

謝謝,但這只是部分回答了問題。 – golobor 2012-01-04 05:48:07

+0

我認爲[Christoph Gohlke](http://www.lfd.uci.edu/~gohlke/)可以回答這個問題。我把他的注意力引向了它。 – 2012-01-04 14:00:37

回答

0

SWIG爲多平臺代碼生成提供了一條途徑。

+0

對不起,我不清楚。問題是關於實際編譯,而不是代碼開發。 – golobor 2012-01-20 05:06:04

0

我所有的Python擴展模塊都是C++,而不是C,所以我使用boost Python。當我需要支持不同的操作系統時,我也使用虛擬機。 Boost的bjam構建驅動程序允許您使用不同版本的Python(2.6,2.7)構建不同版本的g ++和其他各種東西。如果我有一個非常受歡迎的擴展模塊,並且很多人想在我沒有的平臺上使用它,那麼我會確保我的代碼非常便於攜帶(應該是無論如何),並提供關於如何構建它的說明bjam使用了幾個不同的Python版本的例子,等等。這足以讓他們開始。如果這樣做,你可以要求他們回饋他們的構建,以便其他人可以使用它們(當然不支持你)。

7

我們使用虛擬機和Hudson服務器。我們支持的每個體系結構都有一個虛擬機(通常編譯不會擴展分配給它們的資源,所以虛擬機很好)。我猜想每個虛擬機的配置都可以通過像Puppet或Chef這樣的東西進行管理,以確保它是一個合適的構建環境。如果您擁有硬件,您當然可以使用真機,但您希望避免使用人們實際使用的機器(例如開發人員工作站)。

然後,我們在Hudson中使用多配置項目來設置構建矩陣。構建矩陣允許我們(通過單擊)在多種體系結構上構建多個Python版本,但理論上,您可以構建您可以在矩陣中設置的所有組合。當然,你可以用詹金斯來代替。

+0

如果你的一個目標是osX,那麼猜測vm的方式可能是「半」非法的:)仍然看起來像VM方式可能是最好的方式。 – ashwoods 2012-04-17 12:19:32

+0

OSX已經允許虛擬化一段時間了:http://www.macworld.com/article/1163755/vmware_fusion_update_lets_users_virtualize_leopard_snow_leopard.html – hbar 2012-04-17 21:47:56

+0

我們實際上使用了一個專門用於OSX而不是虛擬化服務器的小型Mac迷你農場 - 抱歉,應該澄清那在原來的答案。特別是從ebay購買時,這些價格足夠便宜,可以滿足我們的要求,而且只是堆放在機房的一個角落。但正如hbar所說,虛擬化這些也是現在合法的選擇。 – 2012-04-18 04:33:58

相關問題