2012-08-13 70 views
22

我正在Python中開始一個新的開源軟件,我想知道是否應該使用Python 2.x或Python 3.x.它將包括一個沉重的GUI,處理大量數據的複雜科學算法。我至少需要Numpy,Scipy,PyQT4,PyOpenGL,h5py,optionaly Matplotlib。它應該首先在2013年發佈,並在未來幾年進行更新和擴展。它將被不一定具備計算機科學背景,在各種計算機(Linux,Windows,Mac ...)中使用的科學家使用。有些機器可能老了。新項目:Python 2還是Python 3?

如果我選擇Python 3.x,我擔心軟件和第三方庫的安裝可能會更加複雜,特別是在已安裝Python 2.x的舊系統上。如果在大多數系統上都可以使用類似RPM的軟件包(或Windows安裝程序)以及外部庫,那麼最好不要編譯所有內容。另外,我不知道3.x分支是否足夠成熟。

如果我選擇Python 2.x,在不久的將來如果2.x分支不再被使用(這種情況何時會發生?),我可能需要將軟件移植到Python 3.x。

什麼是最好的選擇?

+3

的依賴,我想只有PyOpenGL尚未移植。 Matplotlib已經移植,但尚未發佈,儘管該版本將在幾個月後發佈。其他人(numpy,scipy,PyQt4,h5py)都已經有了Python 3版本。 – 2012-08-13 17:12:29

+0

和python 3.3在一個月內。到2013年,python 3.4將從烤箱中取出,在維護模式下將取​​消2.7。順便說一下,對於Windows,您已經在Golhke站點中安裝了matplotlib二進制安裝程序。 – joaquin 2012-08-13 17:58:35

+1

我不同意那些建議從2.7開始的人。看看你的依賴關係,看看還沒有聲稱3.x支持的東西。然後看看這將是多少努力。做到這一點。問題解決了,每個人都愛你,你將來無需將代碼從2轉換爲3。 – gps 2012-08-13 20:28:25

回答

5

的Python 3(回答這個問題變了!)

的Python 2是傳統項目。新項目應該傾向於Python 3.

原因是Python 3(現在3.6)每年大致獲得新版本。多年來它一直保持穩定(正處於第十個發行年!)。相比之下,Python 2(仍然是2.7)在過去幾年裏變化不大,並且將繼續停滯不前。

欲瞭解更多信息: https://wiki.python.org/moin/Python2orPython3/

15

本維基確切地討論了你的問題:Should I use Python 2 or Python 3 for my development activity?

這是一個非常大的主觀部分,這個問題取決於正是您的具體情況和制約因素。

IMO,但是,如果你不能肯定,你需要將與Python v3.x工作,我會堅持使用Python 2.x的,但嘗試寫代碼的所有第三方庫是與Python 3.x作爲兼容儘可能多(例如,print()等),以便如果您需要或想要遷移到v3,您的工作將不會如此具有挑戰性。當然在moving from version 2 to 3上有文檔和工具。而這在porting v2 code to v3

在您沒有控制權或無法安裝較新版本的Python或自定義第三方軟件/庫的安裝的系統上,情況尤其如此。

鑑於您的軟件將運行在各種系統(Linux,Windows,Mac ..)以及許多不同的用戶,我仍然認爲v2現在是更常見的分母。

因此,短期關注跨度總結:使用2.x版本,但perpare代碼爲3.x版

最後,如果你把這個搜索字符串「[巨蟒]版本3或2」成在SO搜索框中,您會發現一些related posts

+1

非常喜歡我的答案在http://stackoverflow.com/questions/11372190/python-2-and-python-3-dual-development – 2012-08-13 17:21:29

+0

做print()而不是print()是完全沒有意義的,因爲那種轉換一旦你需要做2to3就很容易完成。使代碼與Python 3兼容意味着不使用已棄用的模塊或構造,並且非常小心字節與Unicode與本地字符串。 – 2012-08-17 18:21:40

2

我同意Levon。有了這些要求,我不會冒險從Python3開始,但是你應該編寫代碼,儘可能多地考慮Python3的變化。

看到這個問題Writing Python 2.7 code that is as close to Python 3.x syntax as possible,因爲它可能會幫助你一些導入和標準,你可以使用它來使你的代碼儘可能的面向未來。另外,如果你在各種系統中運行,你需要分發捆綁在應用程序中的python版本,或者信任用戶的安裝。大多數操作系統(非Windows)都帶有Python的2.x版本,對於非技術用戶來說升級到3.x並不會破壞系統。