9

ビルドとプロジェクト管理ツールが豊富なJava開発から来て、私はDjangoのために利用できるものを知りたいと思います。ビルドにはMavenのようなものを使用したいと思っていますが、それを行うもう一つの方法がありますか?Djangoプロジェクトのプロジェクト管理/ビルドツール?

私は本当に、次のを探しています:

  • コマンドラインの建物:mvn installだけでとても簡単かつクールです。
  • コマンドラインのテスト実行。私はハードコアなので、このアプリケーションをHudsonのようなものに統合して、継続的な統合をしたいと思っています。ローカルテストサーバーへのメディアの
  • 展開(JS、CSS、画像など)

が、これはMavenのか、別のツールで、現在は可能ですか?私はここでかなり大きなプロジェクトに着手しています。プロジェクトが時間の経過と共に成長するのを助けるために、Mavenのようなキック・ラッドのビルド/プロジェクト管理システムを持っていたいと思います。

答えて

7

2つのツールは、両方の一般的なPythonツールである頭に浮かぶ - 彼らは、具体的ジャンゴでは動作しません必要があります。

  • Fabric。これを使用します。 SSHのようにリモートコマンドを書くことができます。コードをアップロードするなど、これはあまりできません。本質的にはPythonで書かれたbashスクリプトなので、非常に簡単です。しかし、Pythonで書かれたbashスクリプトでもあります。つまり、あなたのdjangoアプリケーションの一部をインポートしたり、テストを実行したり、Pythonが展開を実行する過程でできることは何でもできます。
  • Buildout。私はこれを使用していないが、私たちのdjangoフロントエンドの開発者は、これは絶対にツールを使用すると私に伝えます。推測すると、それは同じアイデアか、少し抽象的で、より多くのPython指向の同等のものです。

私は、利用可能な他のパッケージがあると確信しています。私があなたに与えることができる最高のアドバイスは、それらをすべて簡単に評価し、あなたのシナリオ/チーム作業スタイルに最も適したものを選ぶことです。これらは主にデプロイメントツールであることに注意してください。Pythonでビルドするのは、Pythonコードをコンパイルしないので意味がありません。

  • ./manage.py testはすべてtests.pyファイルからテストを実行します:

    CI関連のものの面では、あなたが知っておく必要があるジャンゴからの3つのコマンドがあります。これらは基本的には、Pythonパッケージのunittestのジャンゴ固有の拡張です。

  • ./manage.py collectstaticは、選択したディレクトリに静的ファイルを収集します。すべてのビットをまとめて静的メディアサーバー上に存在させるのに非常に便利です。これがどのように機能するかについては、the static files howtoをご覧ください。
  • あなたはこの1、./manage.py schemamigration app --auto && ./manage.py migrate appためSouthを必要とする - これは、基礎となるSQLスキーマにモデルの変更を適用します。基本的に、モデルを変更してsouthを使わない場合、Djangoは新しいフィールドが古いSQLスキーマにマップされず、モデルを永続化できないため、非常に混乱します。サウス・インターナショナルがサポートするスキーマ・マイグレーションを使用すると、既存の移入されたデータベースをアップグレードできます。自動化する前に手で行う価値がある。
  • 私はまた、あなたが./manage.py whatever you likeを実行するためにcustom management commandsを書くことができます指摘しなければなりません。これにはかなりの可能性があります。たとえば、管理コマンドをcronジョブで実行するコマンドとして使用しました。また、アプリケーションの管理者、そしてもちろんデプロイメントとテストのための対話的なコマンドを作成することもできます。

これらの処理方法は、使用可能なセットアップと選択するツールによって異なります。

コンパイル時:Pythonでビルドするのに最も近いのはフリーズ、バイナリを生成するa.k.a.py2exeまたはcxfreezeです。しかし、これらのことはすべて、exeファイルにPythonバイトコードを格納し、それを共有オブジェクトであるインタプリタに渡すことに注意してください。また、django自体は実行時に発生する動的なインポートを使用するため、本質的にコンパイル時のツールであるcxfreezeでは評価できませんので、djangoアプリケーションをcxfreezeすることはできません。それで、必要な作業として建物を割引する。 .pycファイルがあなたのディレクトリに現れているのを見るかもしれません - 最後のpycから変更があった場合、pythonはあなたのpythonスクリプトをpythonバイトコードに変換します。変更が加えられていない場合、最後の時刻からpycファイルがロードされます。 Pythonのバイトコードは実行されるので、実際にはパフォーマンスの面でスピードアップではなく、時間をロードするだけです。

+0

ビルドアウトは素晴らしいです。私はそれがまさに私が探しているものだと確信しています。ありがとう! –

0

(Django)Python環境を管理して再現するために何かが必要な場合は、pipvirtualenvを参照することをお勧めします。

このSaltyCrane articleは、Djangoでpipを使用しています。この記事では、Ubuntuのプロセスについて説明しますが、UbuntuとOSXの両方で同様の設定を使用します。

私たちはbuildoutとpipの両方を経験しており、pipをbuildoutよりも簡単に、より信頼性高く、容易に見つけました。

関連する問題