2012-08-13 5 views
22

私はPythonで新しいオープンソースソフトウェアを始めています。私はPython 2.xとPython 3.xのどちらを使うべきかと思います。新しいプロジェクト:Python 2またはPython 3?

大量のデータを処理する複雑な科学アルゴリズムである重いGUIが含まれます。少なくともNumpy、Scipy、PyQT4、PyOpenGL、h5py、optionaly Matplotlibが必要です。これは2013年に最初にリリースされ、今後数年間で更新と拡張が行われます。

これは科学者がコンピュータサイエンスの背景を持っていなくても、さまざまなコンピュータ(Linux、Windows、Macなど)で使用されます。一部のマシンは古いかもしれません。

私がPython 3.xを選択した場合、特にPython 2.xがインストールされている古いシステムでは、ソフトウェアとサードパーティのライブラリがインストールするのがより複雑になることが懸念されます。 RPMのようなパッケージ(またはWindowsインストーラ)をPythonと外部ライブラリがほとんどのシステムで利用できれば、すべてをコンパイルする必要はありません。また、私は3.xブランチが十分に成熟しているかどうかわかりません。

私がPython 2.xを選択した場合、2.xブランチが非推奨になった場合(近い将来には?)、近いうちにPython 3.xに移植する必要があるかもしれません。

どのようなオプションが最適でしょうか? Should I use Python 2 or Python 3 for my development activity?

これはまさにあなたの特定の状況や制約に依存して、この質問には非常に大きな主観的な部分である:

+3

は、私だけPyOpenGLはまだ移植されていないと思います。 Matplotlibは移植されていますが、まだリリースされていませんが、数ヶ月でリリースされます。他のもの(numpy、scipy、PyQt4、h5py)はすべて既にPython 3リリースを持っています。 –

+0

そしてpython 3.3は1ヶ月です。 2013年までにpython 3.4がオーブンから出て、メンテナンスモードで2.7になります。ところで、Windowsの場合、Golhkeサイトにmatplotlibバイナリインストーラがあります。 – joaquin

+1

私は2.7から始めることを提案する人に同意しません。あなたの依存関係を見て、まだ3.xサポートを請求していないものを見てください。次に、それを移植するのにどれくらいの努力を払うのか見てみましょう。それをやりなさい。問題は解決され、誰もがあなたを愛し、将来コードを2から3に変換する必要はありません。 – gps

答えて

5

のPython 3.(この質問への答えが変更されました!)

のPython 2レガシープロジェクトのためです。新しいプロジェクトはPython 3に向いていなければなりません。

これは、Python 3(現在3.6)がおおよそ毎年新しいリリースを取得しているためです。それは何年も安定しています(10年目のリリース年です!)。対照的に、Python 2(まだ2.7)はここ数年でほとんど変化がなく、停滞し続けるでしょう。詳細については

:これらの依存関係 https://wiki.python.org/moin/Python2orPython3/

15

このwikiには、正確にあなたの質問について説明します。あなたが必要とするすべてのサードパーティのライブラリがPython v3.xで動作すること確認することができない場合

IMOは、しかし、私は、Python 2.xのに固執するが、Pythonの3.xの場合と同様に互換性があるようにコードを書くしようとしますできるだけ多くの可能な限り(例えば、print()など)、v3への移行が必要な場合や作業を進めたい場合、作業はそれほど難しくありません。もちろん、moving from version 2 to 3にはドキュメントとツールがあります。そしてこれはporting v2 code to v3です。

これは特に、管理していないシステムや、新しいバージョンのPythonをインストールしたり、サードパーティのソフトウェア/ライブラリのインストールをカスタマイズしたりすることができない場合に当てはまります。

あなたのソフトウェアはさまざまなシステム(Linux、Windows、Mac ..)で実行されることを考えれば、私はまだv2が普及していると思っています。

ので、短い注意スパンの要約:

最後にバージョン3.xのための使用バージョン2.xが、あなたのコードperpare 、あなたは、この検索文字列「[パイソン]バージョン3または2」へを置く場合SO検索ボックスには、related postsの番号があります。

+1

非常に私の答えは、http://stackoverflow.com/questions/11372190/python-2-and-python-3-dual-development –

+0

でprint()の代わりにprint()は、その種の変換あなたがそれをやる必要があると2to3で簡単にやります。コードをPython 3と互換性を持たせることは、廃止予定のモジュールや構文を使用せず、バイト対ユニコード対ネイティブ文字列に非常に注意することを意味します。 –

2

私はLevonに同意します。

これらの要件を満たしていれば、まだPython3を起動する危険はありませんが、できるだけ多くのPython3の変更を考慮してコードを書くべきです。

この質問はWriting Python 2.7 code that is as close to Python 3.x syntax as possibleを参照してください。できるだけ将来的にあなたのコードを作成するために使用できるいくつかのインポートと標準に役立つかもしれません。

また、さまざまなシステムで動作している場合は、アプリケーションにバンドルされているPythonのバージョンを配布するか、そのユーザーのインストールを信頼する必要があります。ほとんどのOS(非ウィンドウ)は、Pythonの2.x風味がインストールされているので、システムを破壊する可能性なしに非専門家のユーザーが3.xにアップグレードすることは自明ではありません。

関連する問題