2009-07-02 159 views
4

因此,隨着Python 3.0(現在是3.1)的最終版本,很多人都面臨着擔心如何升級而不會因爲向後兼容而失去一半的代碼庫。關於升級到python 3.0的提示?

什麼是人們爲了避免很多陷阱,這將幾乎不可避免地切換到下一代蟒導致最好的祕訣?

可能是一個良好的開端是「使用2to3的轉換你的Python 2.x的代碼到3.x」 :-)

回答

3

首先,這個問題是非常相似的How are you planning on handling the migration to Python 3?。檢查那裏的答案。

也有在Python維基一個section關於將應用程序移植到Python 3.x的

Release Notes for python 3.0包含有關移植部分。我引述技巧有:

  1. (前提:)具有優良的測試覆蓋率啓動。
  2. 端口到Python 2.6。這應該不會比從Python 2.x到Python 2(x + 1)的平均值更高。 確保您所有的測試都通過了。
  3. (仍在使用2.6)打開-3命令行開關。這會啓用有關將在3.0中刪除(或更改) 功能的警告。再次運行 測試套件,並修復 你得到警告,大約直到有 沒有留下任何警告代碼,所有的測試 仍然通過。
  4. 在源代碼樹上運行2to3源到源翻譯器。 (參見2to3的 - 自動的Python 2至3 代碼翻譯以獲得更多關於該 工具)運行Python 3.0下 翻譯的結果。手動 修復任何剩餘問題,修復 問題,直到所有測試再次通過。

不建議您嘗試編寫 源代碼,該源代碼在Python 2.6和3.0中都在 之下運行;您必須使用非常扭曲的編碼風格 ,例如 。避免打印報表, 元類等等。如果你是 維護需要 同時支持的Python 2.6和Python 3.0庫,最好的辦法是通過編輯2.6 版本的源代碼,並再次運行 的2to3的翻譯,而不是 修改上述步驟3編輯源代碼的3.0版本 代碼。

+1

我會改變最後的聲明說2.x而不是2.6。 2.6具有很多前向兼容性,包括新的打印功能,所以你不必避免它。 – 2009-07-02 04:07:14

2

沒有一個真正令人信服的升級理由,我會堅持什麼工作。我研究了升級我每天使用的腳本,這是太多的工作,我沒有看到任何好處。

「如果不破,不解決它!」

+0

同上。太多的我依賴的庫仍然在Python 2.5上。直到圖書館搬遷,並審查穩定,我留下來。 – 2009-07-02 15:26:17

3

我寫了一本關於此的免費書籍。你可以在這裏閱讀:

http://python3porting.com/

簡而言之:

  1. 確保所有的第三方庫可用於Python 3的
  2. 通過去除常見的歧義準備代碼:
    • 使用//如果你真的想要整數除法。
    • 確保在打開二進制文件時用'b'標誌標記,清楚地表示 指示數據是否爲二進制文件。
  3. 測試覆蓋率越高越好。
  4. 確保它在「Python 2.7 -3」下運行時沒有警告。
  5. 現在運行2to3。
  6. 修復任何錯誤。

就是這樣,或多或少。

+0

死視頻鏈接 – jxramos 2015-08-10 22:50:55