目錄
簡介
更新到Python3的方法
#方法一:重寫整個程式碼庫
方法 2:使用移植過程
更新Setup.py 檔案以表示Python3 相容性
使用現代化或未來化腳本
導入時使用功能偵測以確保版本相容性
比較二進位和文字資料時進行檢查
具有良好的測試覆蓋率
結論
首頁 後端開發 Python教學 如何將一個大型的Python 2程式碼庫更新到Python 3?

如何將一個大型的Python 2程式碼庫更新到Python 3?

Sep 04, 2023 pm 05:09 PM

如何将一个大型的Python 2代码库更新到Python 3?

簡介

Python 最初是作為 Python version2 開始的,也稱為「Legacy Edition」。 Python2 的最後一個版本是 Python2.7,於 2020 年停止使用。 Python 3.x 是作為替代品引入的,與 Python 2.x 版本相比,進行了大量改進和錯誤修復。較舊的舊版 Python 是 LTS 軟體,這意味著它擁有長期支援。然而,Python 3.x 版本是向後不相容的版本,這使得將 Python 2 程式碼庫升級到 Python 3 非常有必要,以充分享受 Python 3 的易用性和支援。開發人員升級到 Python 3 的最大原因可以列舉a) 開發人員生產力(因為它是動態類型的,非常容易學習和編寫程式碼)和 b) 效能改進,包括在大多數任務中更快的效能。

更新到Python3的方法

  • 用 Python 3 重寫程式碼庫

  • 使用移植過程

#方法一:重寫整個程式碼庫

這種升級程式碼庫的方法僅在小規模建立軟體時才有用。這是因為任何升級程式碼庫的人都需要對整個程式碼庫的工作方式有一個總體了解。用Python 3重寫程式碼可以幫助實現Python 3的功能和易用性,從而可以縮短程式碼並提高效率。此外,如果使用其他方法遷移程式碼庫,則在遷移整個程式碼庫之前,實作 Python 3.x 功能可能會出現問題。重寫程式碼庫解決了這個問題,也讓我們有機會升級我們長期以來想要做的任何程式碼區塊。

但是,此方法僅在程式碼庫具有較小的可擴展大小時才有效。

方法 2:使用移植過程

另一方面,我們可以使用文件中官方描述的Python移植過程。從較高的層面來看,這種移植是一個三步驟過程 -

  • 自動轉換

  • 手動更改

  • 運行時驗證和修復

#但是,所有這一切的先決條件是首先安裝 Python 3 及其相關的套件和程式庫。讓我們看看 Windows 的流程。

下載並安裝 -

https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe

這將安裝 Python 軟體。之後,可以使用官方的 Python 2 到 Python 3 移植模組或軟體(例如 2to3 等)開始移植過程。這會將程式碼移植到 Python 3 中,但必須注意以下問題 -

更新Setup.py 檔案以表示Python3 相容性

安裝檔案中的分類器必須更新為包含程式語言 :: Python :: 3 。這將只允許 Python 3 或其某些版本存在於編碼環境中(特定版本分類器也可用),從而防止不必要地回溯到 Python 2 程式碼。這將極大地幫助維護程式碼完整性,並允許整個程式碼庫僅存在於 Python 3 中。

使用現代化或未來化腳本

由於 Python 3 不向後相容,因此程式碼庫中的所有腳本都必須升級到 Python 3 標準。在這裡,我們可以在每個需要升級的模組的開頭使用 Modernize 或 Futurize 等腳本。並非所有 Python 功能都會在模組中使用,但必須對一些基本功能進行現代化改造,以確保任何模組的順利運作。因此,為了安全起見,Python 官方文件建議添加以下程式碼 -

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function 
登入後複製

這確保了我們目前的程式碼不會因為一些基本的依賴關係而在 Python 3 下退化並停止運作。然而,更好的方法是使用 Pylink 項目,其中的 --py3k 標誌有助於指出我們的程式碼偏離 Python 3 相容性的情況。這可以防止在每個區塊的開頭單獨執行 Modernize 或 Futurize 腳本,從而縮短程式碼並減少錯誤,儘管需要注意的是 Pylint 僅支援 Python 3.4 或更高版本。

導入時使用功能偵測以確保版本相容性

在某些情況下,Python 2 程式碼庫可能包含無法在 Python 3 中執行的模組。透過使用功能檢測,我們可以了解先前的專案是否支援 Python 3 版本。使用功能檢測而不是版本檢測來檢查我們需要使用的正確版本是一種更安全的方法,這將防止將來出現更多問題。

try:
   from importlib import abc
except ImportError:
   from importlib2 import abc 
登入後複製

比較二進位和文字資料時進行檢查

在Python 3中,文字和二進位資料類型不能公然混合,因為這會導致錯誤。但此檢查無法使用任何其他Python 庫自動執行,因此最好運行自定義代碼塊來比較基於字符串和二進制的數據,原因是Python 3 bytes 的行為方式不同就像舊版Python 中的舊str 一樣。

具有良好的測試覆蓋率

擁有良好的測試覆蓋率對於防止錯誤非常重要,並且透過僅更改需要的地方來縮短升級程式碼所需的時間。 Coverage.py 等工具在這種情況下會發揮很大作用,透過找出執行的內容和錯誤之間的差異來找出確切位置的錯誤。

結論

在這裡,我們了解了將大型軟體程式碼庫從 Python 2 遷移到 Python 3 的一些方法,以及我們應該注意的一些限制和一些可以使用的有用方法。但是,該過程可能會在一定程度上有所不同,具體取決於所考慮的程式碼庫以及專案中使用的程式庫和模組。這些一般步驟確實可以以整體良好的方式將大多數程式碼庫轉換為 Python 3 並使 Python 程式碼現代化。

以上是如何將一個大型的Python 2程式碼庫更新到Python 3?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1320
25
PHP教程
1269
29
C# 教程
1249
24
Python vs.C:申請和用例 Python vs.C:申請和用例 Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法 2小時的Python計劃:一種現實的方法 Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:遊戲,Guis等 Python:遊戲,Guis等 Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python與C:學習曲線和易用性 Python與C:學習曲線和易用性 Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python和時間:充分利用您的學習時間 Python和時間:充分利用您的學習時間 Apr 14, 2025 am 12:02 AM

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

Python:自動化,腳本和任務管理 Python:自動化,腳本和任務管理 Apr 16, 2025 am 12:14 AM

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python標準庫的哪一部分是:列表或數組? Python標準庫的哪一部分是:列表或數組? Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

See all articles