我注意到幾個成熟的Python庫對於大多數體系結構(Win32/Win-amd64/MacOS)和Python的版本都有預編譯版本。在不同環境下交叉編譯擴展的標準方式是什麼?紅酒?虛擬機?人羣採購?如何爲不同的操作系統/版本的Python編譯Python C/C++擴展?
回答
我所有的Python擴展模塊都是C++,而不是C,所以我使用boost Python。當我需要支持不同的操作系統時,我也使用虛擬機。 Boost的bjam構建驅動程序允許您使用不同版本的Python(2.6,2.7)構建不同版本的g ++和其他各種東西。如果我有一個非常受歡迎的擴展模塊,並且很多人想在我沒有的平臺上使用它,那麼我會確保我的代碼非常便於攜帶(應該是無論如何),並提供關於如何構建它的說明bjam使用了幾個不同的Python版本的例子,等等。這足以讓他們開始。如果這樣做,你可以要求他們回饋他們的構建,以便其他人可以使用它們(當然不支持你)。
我們使用虛擬機和Hudson服務器。我們支持的每個體系結構都有一個虛擬機(通常編譯不會擴展分配給它們的資源,所以虛擬機很好)。我猜想每個虛擬機的配置都可以通過像Puppet或Chef這樣的東西進行管理,以確保它是一個合適的構建環境。如果您擁有硬件,您當然可以使用真機,但您希望避免使用人們實際使用的機器(例如開發人員工作站)。
然後,我們在Hudson中使用多配置項目來設置構建矩陣。構建矩陣允許我們(通過單擊)在多種體系結構上構建多個Python版本,但理論上,您可以構建您可以在矩陣中設置的所有組合。當然,你可以用詹金斯來代替。
如果你的一個目標是osX,那麼猜測vm的方式可能是「半」非法的:)仍然看起來像VM方式可能是最好的方式。 – ashwoods 2012-04-17 12:19:32
OSX已經允許虛擬化一段時間了:http://www.macworld.com/article/1163755/vmware_fusion_update_lets_users_virtualize_leopard_snow_leopard.html – hbar 2012-04-17 21:47:56
我們實際上使用了一個專門用於OSX而不是虛擬化服務器的小型Mac迷你農場 - 抱歉,應該澄清那在原來的答案。特別是從ebay購買時,這些價格足夠便宜,可以滿足我們的要求,而且只是堆放在機房的一個角落。但正如hbar所說,虛擬化這些也是現在合法的選擇。 – 2012-04-18 04:33:58
- 1. Python和不同的操作系統
- 2. 如何確定編譯rpm的操作系統版本?
- 3. python中的擴展操作符的非插入版本
- 4. 如何編譯PHP擴展跨版本?
- 5. 交叉編譯Python擴展
- 6. 編譯IP2Location Python擴展爲Windows 7
- 7. jQuery - 檢測操作系統和操作系統版本
- 8. 爲主要操作系統版本設置最低操作系統版本,同時允許以前的操作系統版本?
- 9. 如何在OSX上爲Python編譯C++擴展(而不是C)?
- 10. 跨不同操作系統的相同瀏覽器版本
- 11. 在不同的操作系統上的樹枝編譯異常
- 12. Blackberry操作系統版本
- 13. 擴建 - 使用不同的Python版本
- 14. Python:可以用py2exe編譯的腳本凍結操作系統嗎?
- 15. Python CPU和操作系統
- 16. Python操作系統模塊
- 17. IE8在不同操作系統版本之間的行爲有所不同嗎?
- 18. 操作系統的編譯時間
- 19. 如何在同一操作系統中管理不同版本的node.js?
- 20. Redis擴展Mac操作系統
- 21. 從Firefox擴展檢測操作系統
- 22. 如何區分node.js中的不同操作系統發行版?
- 23. 在不同版本的操作系統上測試iPhone軟件
- 24. 針對不同版本的Windows Phone操作系統
- 25. 需要不同操作系統版本的MacOS vs Info.plist
- 26. 在Linux中,如何爲不同版本的Python編譯和安裝代碼?
- 27. 如何手動安裝本地編譯的python庫(共享python庫)到系統?
- 28. 不同操作系統上的Python程序
- 29. Python和MySQL編譯版本
- 30. 如何啓用分數操作系統的PHP json擴展
您可以在[官方Python文檔](http://docs.python.org/distutils/builtdist.html)中找到關於此的一些有限信息。 – 2012-01-04 04:22:37
謝謝,但這只是部分回答了問題。 – golobor 2012-01-04 05:48:07
我認爲[Christoph Gohlke](http://www.lfd.uci.edu/~gohlke/)可以回答這個問題。我把他的注意力引向了它。 – 2012-01-04 14:00:37