4

Python 2.7.3 で、約 100 個のモジュールを含む中規模のプロジェクトを作成しました。どの以前のバージョンの Python (例: 2.6.x、2.7.x) が私のコードと互換性があるかを調べたい (私のプロジェクトをパブリック ドメインでリリースする前に)。それを見つける最も簡単な方法は何ですか?

私が知っている解決策 -

  1. 複数のバージョンの Python をインストールし、すべてのバージョンをチェックインします。しかし、まだテスト ケースを定義していないので、最初にそれらを定義する必要があります。
  2. 互換性を確認したいさまざまなpythonバージョンの変更ログを読んで比較し、それに応じて見つけます。

より良い解決策を提供してください。

4

4 に答える 4

3

いくつかのテストケースなしでこれを回避する方法を本当に知りません。コードが古いバージョンの Python で実行できたとしても、コードを十分にテストする一連のテスト ケースがなければ、コードが正しく動作するという保証はありません。

于 2013-06-25T17:09:14.983 に答える
1

いくつかのテストケースでははるかに簡単ですが、手動でテストすると合理的なアイデアが得られます.

サポートしたい最も古いバージョンを使用してください (2.5.x をお勧めしますが、必要に応じてさらに遡ってください。そのバージョンで手動でテストし、何をしたか、特に失敗した場合はどこで失敗したかをメモします。次に、問題に対処するか、バイナリ検索を実行して、障害ポイントが消えるバージョンを確認します. これは、おそらく 2.0 で失敗することが確実なバージョンから開始すると、さらにうまくいく可能性があります.

于 2013-06-25T17:42:08.207 に答える
1

いいえ、あなたが名前を付けたのは、それがどのように行われたかということです.What's Newページと適切なドキュメントは、完全な変更ログよりも役立つかもしれません. このような巨大で移動するターゲットへの互換性は、部分的にでも自動化することはできません。次の理由から、それは思ったほど多くの作業ではありません。

  1. 一部の人々はテストスイートを持っています;-)
  2. (通常) バグ修正リリース (さまざまな x の 2.7.x など) を考慮する必要はありません。コードにバグ修正が必要な場合もありますが、一般的に .0 リリースは非常に信頼性が高く、xy0 と互換性のあるコードは、どの xyz バージョンでも実行できます。
  3. 下位互換性ポリシーのおかげで、サポートされる最小バージョンを確立するだけで十分です。以降のすべてのリリース (同じメジャー バージョン) は互換性を維持します。2.7 はこれまでの最後の 2.x リリースであるため、これは役に立ちませんが、たとえば 2.5 をターゲットにする場合、通常は 2.6 または 2.7 の互換性を確認する必要はありません。
  4. コーディング中に目を開いていて、少しの経験と記憶力があれば、最近のバージョンで導入されたいくつかの機能を使用したことがわかります。具体的なバージョンがわからない場合でも、ドキュメントですぐに調べることができます。
  5. 一部の人々は、特定のバージョンをサポートする目的で着手し、開発時に常にそのことを念頭に置いています。たまたま他のバージョンで動作したとしても、サポートされていないと見なし、互換性を主張しません.

したがって、2.7 に制限するか (3 年前からリリースされています)、古いリリースでテストを実行することができます。どの非互換性があり、どのように修正できるかではなく、互換性があるかどうかを判断したいだけの場合は、次のことができます。

  1. What's New ページで、使用した新機能 (最も重要な新しい構文) を検索します。
  2. 使用したサードパーティ ライブラリのバージョンの制約を確認してください。
  3. 新しく追加された機能については、使用する標準ライブラリ モジュールのドキュメントを検索してください。
于 2013-06-25T17:25:46.767 に答える