2016-12-20 9 views
1

私はPython 3.5にアップグレードしたいですが、私は従来のpython 2.7パッケージを使用しています。 Python 3.5で従来のパッケージを実行するのは簡単ですか?私はこれが簡単ではないという印象を受けていますが、私が間違っているかどうかを確認するためにいくつか検索しました。python 3.5で従来のpython 2.7のコードを実行できますか?

私は3.5コードと2.7パッケージの間で標準化されたハンドオフを可能にするマルチプロセッシングパッケージがあると思います。それによって、彼らは独自の環境下で独立して動作することができます。

私は独自のコードを3.5に変換することについては言及していませんが、私が使用するライブラリについては、私のために更新されません。

+1

多くのレガシーパッケージは、python3.xに同梱されている '2to3'ツールでアップグレードできます。しかし、このツールは100%完璧ではありません。パッケージが動作するかどうかを知る最も良い方法は、それを試して何が起こるかを調べることです(あるいはドキュメントでpython3.xをサポートしているかどうかを調べる)。 – mgilson

+4

いいえ、変換して広範囲にテストする必要があります。構文の変更だけでなく、除算結果などのより微妙な問題もあります。その後、Cで書かれたモジュールがあり、APIの変更を書き留めてPython 3ランタイムにリンクする必要があります。 – cdarke

答えて

1

2.7でサポートされている新しい構文を使用した場合、例外を除いて、そして/または、より良いことに、__future__からインポートされた新機能を使用すると、コードをPython 3に変換する時間を大幅に短縮できます(まったく変更なし)。 Python 3に急激にジャンプすることなく、徐々に踏み込むことができるので、まずこの道をたどることをお勧めします。

異なるバージョンのPythonプロセスが相互運用できると思います。オブジェクトのpicklingフォーマットは互換性があり、それを確実にするために両側に特定の酸洗いプロトコルバージョンを使用してください。私はどちらの側にもmultiprocessingパッケージが役に立たないとは思わない。たとえば、より一般的な解決策としてZeroMQ。

1

残念ながら、2.7(完全に動作する)の下で2.7コードの処理を処理する「良い」または自動の方法はありません。

あなたは、あなた自身のコードではなく、ライブラリについて心配していると述べました。まず、開発中であれば更新されることを願っています。そうでない場合は、あなたが述べたように、将来の証拠になる可能性があります。良いものがいくつか見つかりました(例:google-api-python-client、たとえばhttps://github.com/google/google-api-python-client/blob/master/setup.py)。

アップグレードするには、すべての構文変更を自分で修正するしかありません。私が扱う最も一般的なものは、「印刷」と例外処理です。

関連する問題