2016-03-08 111 views
1

我是一位擁有超過10年經驗的Java開發人員。選擇Python 2(.7.x)和Python 3(.5.x)

幾個月前我開始使用python,因爲我需要創建一個腳本,它從REST服務中提取數據,然後使用此數據生成報告。 python是一種多用途語言(腳本編寫,Web應用程序,REST服務等)以及非常快的開發速度,這引發了我對這種語言的深刻興趣。事實上,這是我在Linux世界中唯一使用的語言。

目前我正在嘗試將我的(powershell/shell)自動化腳本移植到python,該腳本是爲Piston(基於開放源碼的Java的微門戶技術)的完全自動化發佈過程而開發的。然而在我面前的一個主要挑戰是我應該使用python的哪個版本(2或3)?理想情況下,我更喜歡3,因爲我相信這比第2版有很多改進,我想使用這個版本的所有新開發。不過我擔心的是可能有一些軟件包可能不是python 3的一個版本。這是已經在python.org網站也被提及 -

然而,也有可能需要使用Python 2而不是Python中的一些關鍵問題3.

首先,如果你部署到一個你不能控制的環境,這可能會強加一個特定的版本,而不是讓你從可用的版本中自由選擇。其次,如果你想使用一個特定的第三方包或者還沒有與Python 3兼容的發佈版本的工具,並且移植這個包是一件不平凡的任務,你可以選擇在Python 2中使用爲了保留對該軟件包的訪問權限。

Twisted(用於網絡和其他應用程序)還不支持Python 3的一個流行模塊。大多數主動維護的圖書館都有人致力於3.x支持。對於一些圖書館來說,它比其他圖書館更重要:例如,Twisted主要關注生產服務器,支持舊版本的Python很重要,更不用說支持包含對該語言進行重大更改的新版本。 (Twisted是移植到3.x的主要軟件包的一個主要示例,它遠不是微不足道的。)

所以我不想處於一種我認爲可以非常對我的自動化腳本很有用,但沒有python的版本3.

+0

爲什麼你不試着確定你需要哪些軟件包? 您可以嘗試爲大多數腳本運行Python 3,並且當您遇到需要3中尚未支持的包的問題時,可以使用virtualenv? –

回答

1

使用python 3.不支持python 3的軟件包數量每天都在減少,絕大多數大型/重要框架都在那裏已經支持兩者。甚至有一些項目完全放棄了python 2,儘管這些項目往往不大(因爲企業的慣性往往會讓項目回落)。

開始一個新項目今天蟒蛇2,尤其是初學者,剛剛打開自己更多的痛苦比IMO運行到不支持Python 3的

考慮蟒蛇的多功能性包裝和充滿活力的Python社區的大小,通常有多個包可以解決相同的問題。這意味着即使你發現一個不支持python 3的程序,也經常可以找到一個支持python 3的類似項目。

一旦你對w/python 3有足夠的信心,並且你運行了一個包只支持python 2,你總是有源碼並可以開始貢獻補丁!:D

0

我會邀請你從Python 3開始。你在3中編寫的幾乎所有內容都可以用2來編寫,但是現在大多數情況下,現在大多數包都支持3,並且你將在Python中擁有其他技能可能不會(例如async io)。 Python 3還解決了來自以前版本的文本和二進制數據的問題(閱讀更多here)。