2

私の同僚と私は現在、初期段階の Python コードベースのテストを自動化するための小さな一歩を踏み出していますが、環境のセットアップとパッケージ管理に関していくつかの問題に遭遇しました。これまで Python でこれを行ったことがないため (少し... 壊れているように見えます)、どんな助けも歓迎します。

要件:

  • スクリプトを介してテストを実行できます ( Noseはかなり良さそうです)
  • Windowsマシンで実行されます
  • これは、TeamCityおよび標準の開発者マシンを介して実行できます。優れた TeamCity レポート/統合はおまけです。
  • スクリプトを呼び出して、複数のマシンで正確で再現可能な結果を​​得ることができるはずです。
  • すべての依存関係/パッケージの要件は、シンプルで再現可能な方法で満たされています (これは、ルビーとバンドラーを使用してメインのコードベースで行い、python でトリックを繰り返すのに苦労しています)。人々が卵を手動でインストールしたり、easy_install などを使用したりしなければならない場合、それは地獄になるでしょう。「これらの依存関係が考慮されていることを確認してから、テストを実行してください」というスクリプトを呼び出すことができるはずです。

理想的には、ワークフローは次のように機能する必要があります (現時点では、Python のインストール/取得方法は無視します)。

  • Windows マシンは SCM と同期します
  • マシンはスクリプトを実行して、すべての Python 依存関係 (Shapely など) が考慮されていることを確認します。
  • マシンは、nose またはその他のテスト ランナーを実行するスクリプトを呼び出すことができます。
  • スクリプトは、ビルドが失敗したかどうかを示す値を返します

ボーナスポイントの質問:

Python をソース管理にチェックインするのではなく、各開発マシン / ビルド エージェントにインストールしたいと考えています。これまでのところ、この面での最善の策は、Windows/System32 にある pythonxx.dll と一緒に Python インストール ディレクトリを SCM にチェックインすることですが、これが欠陥のあるアプローチであるかどうかはわかりません。

Movable PythonPortable Pythonを見つけました。最善のアプローチは何ですか?私が言ったように、これが実行可能でない場合は、.msi を使用して各マシンに python をインストールするだけで済みます。

乾杯!

4

1 に答える 1

0

それ以上のものがないので、試行錯誤しながら問題を解決しました。現時点では、コードベースが小さいため、このアプローチにはまだ公開されていない欠陥がある可能性がありますが、当面はそれを使用します。

最後に、私たちは:

  • PortablePython2.7をSCMに追加しました。これはちょうど-works(tm)です。
  • SCMにカールを追加
  • curlを呼び出し、PythonセットアップツールをプルダウンしてインストールするWindows.batファイルを作成しました。次に、セットアップツール(メタパッケージアホイ)を介してpipをインストールします。次に、Pipが要件ファイルに対して実行されます。pip要件ファイルには、特にnose(pythonテストランナー)とteamcity-nose(noseのTeamCity CI統合)が含まれています。

次に、面倒なことなくテストを自動的に実行するテストランナーを呼び出します。悪くない!

また、将来的にvirtualenvをチェックする予定です。

編集(N年先):

Pipは、Python2.7.9以降に標準で付属しています。最近のことを行う最も簡単な方法(imo)は次のようなものです:

  1. 箱から出してピップを使用する
  2. virtualenvをインストールします
  3. プロジェクトのvirtualenvを作成し、アクティブ化します
  4. pipを使用して依存関係をインストールします(残念ながら、easy_installにフォールバックする必要がある場合があります)
  5. ディスコ。

また、本当に必要な場合を除いて、ポータブルpythonを使用しないでください。本当にそれで解決しなかったらいいのに。

于 2012-05-10T20:01:22.313 に答える