本文檔總結了針對python2升級到pyhon3的方法。
需求:現需要將一條分支的代碼從python2升級到pyrhon3。
需求拆分:為滿足升級,需做到以下:
1.運行環境需要從python2遷移到3
2.代碼語法需要從python2改為3(可以選擇2和3都兼容的語法)
環境遷移
1.linux機器可以同時存在python2和python3,故先查看服務器有無python3環境(命令行直接敲python3回車),沒有的話需要下載安裝。
2.pip下載的python2的三方包,在python3里面也需要下載。
代碼修改
1.工具掃描
python3提供了2to3的工具,可以將一些常見的語法(print/has_key...等)自動升級到python3,故我們先使用工具:
(1)在終端命令行執行whereis 2to3,發現該工具在/usr/bin/2to3目錄下,ll /usr/bin/2to3,發現此路徑有一個軟連接2to3。
(2)執行2to3 -w -n files,意思是修改但不備份原文件(2to3工具怎么使用去搜索下)
注:此處可能會遇到編碼報錯,掃描升級失敗的問題。可以使用notepad++修改要掃描的py腳本編碼,然后重新執行命令。
注:一個文件被掃描成功以后,不要再次掃描它,不然會導致語法出錯,比如print(())這種怪形式。
2.手動修改
以上兩步將py腳本里可借助工具掃描升級的語法處理了,接着是手動修改腳本涉及的語法點:
(1)# coding=uft-8 指定編碼
(2)#!/usr/bin/env python3 使用3的python解釋器
(3)2里面的string模塊在3中被去掉了,故刪除。
(4)file()->open()或with open() ps:推薦使用with open()方法
(5)os.system()->subprocess.call()或者subprocess.run()
(6)import中的.(相對路徑)需要改為絕對路徑
(7)has_key->in(已被2to3工具處理)
(8)print->print()方法(已被2to3工具處理)
(9)字符串拼接+和+=改為{}.format()方法或者"(%s %s)" %(hi, name)或者join()
至此,python2到3的升級就完成了,可以本地調試通過后提交申請上庫。