15

ESRI のジオプロセッサでうまく動作するようにしようとしているコードがいくつかあります。ただし、ESRI のジオプロセッサは Python 2.2、2.3、2.4、2.5 で動作します。ツールをどのバージョンでも動作させる必要があります。そのため、ラッパー ジオプロセッサがすべてのバージョンで同じ機能を持つように、さまざまなバージョンの回避策の作業とコーディングに多くの時間を費やしました。

ここで重要なのは、基本的にモジュールをスキャンして、その構文とメソッドが上記のPythonバージョンと下位互換性があるかどうかを確認できるアプリケーションはありますか?

残念ながら、Python 2.5 を必要とする Arcgis 9.3 を使用しているため、Python 2.2 をインストールできません。逆に、ほとんどすべてのモジュールの依存関係を整理して解決しました。(win32com、ctypes など)。

しかし、私は自分の実際のコードについて心配しています。どのバージョンにどのキーワードが追加されたかなどを読むのに何時間も費やすことができますが、これは基本的に大きな頭痛の種になります。これらのことを行う何らかのアプリケーションはありますか?

4

2 に答える 2

11

商用製品を積極的に開発していて、これらすべてのバージョンを適切にサポートしたい場合は、次のことをお勧めします。

  1. ライブラリ/アプリケーションなど全体の機能を実行およびテストできる自動テストスイートを作成します。

  2. マシン、または理想的には各テスト環境用の仮想マシンをセットアップします(Python 2.2-2.6、および製品がwin32のみでない場合は任意のプラットフォームの組み合わせ)。現在、無料の仮想化製品がいくつかあることを考えると、これは特に簡単です(2つ挙げるとVirtualBoxとVMWare Server)。

  3. buildbotのようなものを使用して、他のすべてのプラットフォームで実行されるテストを自動化し、結果を収集します。

ただし、2.2と2.3の間、および2.3と2.4の間で大幅な変更があったことをお伝えしておきます。これが、そこにあるほとんどのPythonライブラリが2.3のみをサポートしている理由であり、現在、2.4以降のみをサポートするようになっているものもあります。

すべてのメジャーリリースには「Python2.xの新機能」ドキュメントがありますが、2.2にコーディングすると、次のことを見逃してしまいます。

  • ジェネレーター(2.3)(実際には、2.2でジェネレーターを取得できますfrom __future__ import generators
  • ジェネレータ式(2.4)
  • サブプロセスモジュール(2.4)
  • デコレータ構文(2.4)
  • セット(2.3)
  • 10進数(2.4、ただしバックポート可能)
  • 日時(2.3)
  • itertools(2.3)

おそらくあなたが持つことができない素晴らしいものの非常に小さなサブセットに名前を付けるだけです。

7年前のPythonバージョンをどれほどひどくサポートしたいかを本当に考えなければならず、コードサイズを減らす(または単に読みやすさを向上させる)ことができる多くの優れた機能を見逃す必要があります。

于 2010-02-17T17:46:59.280 に答える
10

pyqverを試してください:https ://github.com/ghewgill/pyqver/

使用されるキーワードとモジュールを分析する特定のPythonスクリプトの最小バージョンを提供します。

また、Python 2.2をローカルでコンパイルし、virtualenvを使用して、-pythonフラグを使用してPython2.2環境を作成することもできます。

于 2010-02-17T17:46:00.183 に答える