Python で再現可能な環境のためのツール (またはツールの組み合わせ)
質問
私は以前 Java 開発者で、開発/テスト/UAT 環境を標準化された方法で管理するために ant や maven などのツールを使用していました。これにより、ライブラリの依存関係の処理、OS 変数の設定、コンパイル、デプロイ、単体テストの実行、および必要なすべてのタスクを実行できるようになりました。また、生成されたスクリプトにより、すべての環境がほぼ均等に構成され、すべてのタスクがチームのメンバー全員によって同じ方法で実行されることが保証されました。
私は今 Python で作業を始めていますが、Java で説明したのと同じことを達成するにはどのツールを使用すればよいかアドバイスをいただきたいです。
解決
仮想環境 包含された仮想環境を作成します (異なるバージョンの Python または Python パッケージが互いに踏みつけないようにする)。このツールに移行する人々の話題が増えています。作者は、Aaron が言及した古い working-env.py と同じです。
ピップ virtualenv 内にパッケージをインストールします。S が回答したように、伝統的なのは easy_install です。Lott ですが、pip は virtualenv を使用した方がうまく動作します。ただし、easy_install には pip にはない機能がまだあります。
軽蔑的 ビルド ツールとして使用できますが、純粋に Python を使用する場合はこれは必要ありません。
ビルドボット 継続的統合のために。
バージョン管理には Bazaar、mercurial、または git。
鼻 単体テストの拡張機能として。
他のヒント
私は、JavaとPythonの両方で動作します。 Pythonの開発のためにMavenの相当setuptoolsのです( http://peak.telecommunity.com/DevCenter/setuptools)。 Webアプリケーション開発のために私は展開プロセスのためのペースター( http://pythonpaste.org/する)との組み合わせでこれを使用します
私たちのLinuxサーバのために、我々は、easy_installを使用し、YUMます。
私たちのWindows開発のノートパソコンについては、我々はいくつかのプロジェクトのためにeasy_installを、いくつかのMSIのを使用します。
私たちが使用するPythonライブラリのほとんどはソースのみですので、我々はすべてのボックスに同じ分布を使用することができます。我々はネットワーク共有デバイスを持つことができれば、我々はそこにすべてを置くところ。悲しいことに、私たちのインフラストラクチャは、種類の散乱、私たちは周りの.tarファイルを移動したり、環境を再構築するためにインストールをやり直す必要がありどちらかされます。
いくつかのケース(例えば、PIL)において、我々は、再コンパイルとバージョン番号を確認する必要があります。
あなたは easy_setup の卵を得ることになるでしょう(大体Mavenは、アーティファクトと呼んでいるもの)。
あなたの環境を設定するために、 working-env.py のを見ています
Pythonはコンパイルされませんが、あなたは卵で、プロジェクトのすべてのファイルを置くことができます。これは setuptoolsのの
で行われていますCIについては、この回答する を確認します。
私たちは、ケビン・Dangoorによって作成された、また舗装に言及しないように怠慢だろう TurboGearsのの名声の。このプロジェクトは、アルファにまだあるが、それは非常に有望表示されます。プロジェクトページから抜粋ます:
舗装は、メイクや熊手の線に沿ってPythonベースのビルド/分配/展開スクリプトツールです。何舗装のユニークな点は、一般的に使用されるPythonライブラリとの統合です。前に容易であった一般的なタスクを簡単に残ります。さらに重要なのは、アプリケーションの特定のニーズや要件に対処することは、今非常に簡単です。
私はsetuptoolsのとハドソンの組み合わせで正確にこれを行います。私は、ハドソンがJavaアプリです知っているが、それはうまくPythonのものを実行することができます。
あなたはhref="http://www.viewtier.com/products/devenv/index.htm" rel="nofollow noreferrer">の devenvをの。それはあなたが開発、QAとUATのためのビルド環境を標準化することができます。これは、「無料のビール」のように無料です。
HTH