我的東西,開發和關於Python 2.5.2運行移動到Python 2.6.x的
我想移動一些代碼到3.x,但是這是不可行的,因爲這麼多我使用外部包還沒有。 (比如numpy)。
所以,我會做中間步驟並轉到2.6.2。
我的問題:如果一個外部模塊在2.5.2上運行,但沒有明確說明它與2.6.x一起工作,我可以認爲它會好嗎?或不?
我的東西,開發和關於Python 2.5.2運行移動到Python 2.6.x的
我想移動一些代碼到3.x,但是這是不可行的,因爲這麼多我使用外部包還沒有。 (比如numpy)。
所以,我會做中間步驟並轉到2.6.2。
我的問題:如果一個外部模塊在2.5.2上運行,但沒有明確說明它與2.6.x一起工作,我可以認爲它會好嗎?或不?
他們很可能會工作得很好。有些事情可能會導致DeprecationWarnings,例如sha模塊,但它們可以安全地忽略。這是我的直覺,當然你可以碰到一些導致問題的具體事情。無論如何,咋一看對這些應該告訴相當快的代碼是否需要工作與否:
只是在2.6下測試了30,000行應用程序。工作很好。異常處理中的一個小問題(不推薦使用.message屬性)吸引了我。 – 2009-08-28 20:57:28
你不能假設。但是,您應該能夠輕鬆測試它是否有效。
另外,不要打擾試圖移動到3.x一年或兩年。 2.6已經將3.0的許多功能移植到了它,所以一旦你做到了,轉換就不會那麼糟糕。
可能值得閱讀2.6文檔中的What's New部分。雖然2.6被設計爲向後兼容,但有一些變化可能會捕獲代碼,特定的代碼會做一些奇怪的事情(例如:hasattr()
用於吞下所有錯誤,現在它吞噬除SystemExit
和KeyboardInterrupt
之外的所有錯誤;不是大多數人會注意到,但可能會有奇怪的代碼,它會有所作爲)。
此外,該代碼還指出了您可以進行的更改,以便在讀取包時(例如,即使它們在2.6中是同義詞時區分str和字節),也可以更輕鬆地移至3.x。
主要問題將隨您可能使用的任何C編碼擴展一起提供:取決於您的系統,但尤其是在Windows上,編譯爲2.5的此類擴展可能根本無法工作(或至少不會安靜地和可靠)與2.6。這與過去從2.4遷移到2.5時沒有什麼不同。
最簡單的解決方案(恕我直言)是獲得任何這樣的擴展的來源,並重新安裝它們。在大多數平臺上,對於大多數擴展,python setup.py install
(可能帶有sudo
或以管理員身份登錄,具體取決於您的安裝)都可以使用 - 您可能需要下載並安裝適當的「開發人員」軟件包,這取決於您的系統(例如,在Mac OS X上,您需要安裝XCode - 或者至少是其中的gcc子集,但最簡單的方法就是安裝它 - 這又要求您註冊在Apple Developer Connection免費下載大型XCode軟件包)。
我不確定此時此方法在Windows上是多麼的無憂無慮 - 也就是說,您是否可以使用免費的啤酒編譯器,如mingw或微軟的VS的「express」版本,或者必須向MS發出$$才能獲得正確的編譯器。但是,大多數第三方擴展的開發人員都在努力提供準備好的Windows二進制文件,這完全是因爲用戶重新編譯在Windows上(或者至少曾經是)在Windows上很麻煩,2。6已經得到了第三方擴展維護者的廣泛支持(因爲畢竟它只是簡單地重新編譯它們;-),所以你可能會很幸運,並找到所有你需要的預編譯的二進制文件使用。
我想你可以試試看? – SilentGhost 2009-08-28 13:59:03
你應該沒問題。當我切換到2.6時,我沒有遇到任何嚴重的問題。 – 2009-08-28 14:15:01