12

ビルドおよびプロジェクト管理ツールが豊富なJava開発から来たので、Djangoで何が利用できるか知りたいです。本当にMavenのようなものを使って物を作りたいのですが、別の好ましい方法はありますか?

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

  • コマンドラインの構築:mvn installとても簡単でかっこいいです。
  • コマンドラインテスト-実行。私はそのようなハードコアなので、継続的インテグレーションのためにこのアプリをハドソンのようなものに統合したいと思います。
  • ローカルテストサーバー(JS、CSS、イメージなど)へのメディアの展開

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

4

2 に答える 2

7

どちらも一般的な python ツールである 2 つのツールが思い浮かびます。特に Django で動作する必要はありません。

  • ファブリック。これを使用します。これにより、SSH で接続されているかのようにリモート コマンドを記述したり、コードをアップロードしたりできます。これらは、実行できないことはほとんどなく、基本的には Python で記述された bash スクリプトであるため、非常に簡単に実行できます。ただし、これは Python で記述された bash スクリプトでもあります。つまり、django アプリの一部をインポートしたり、テストを実行したり、デプロイの実行中に Python で実行できることを実行したりできます。
  • ビルドアウト。私はこれを使用したことはありませんが、django frontent の開発者は、これは絶対に使用すべきツールだと言っています。推測では、それは同じアイデアか、もう少し抽象的で、より Python 指向の同等物です。

他のパッケージもあると思います。私ができる最善のアドバイスは、それらすべてを簡単に評価し、シナリオ/チームの作業スタイルに最も適したものを選択することです. これらは主に展開ツールであることに注意してください。Python コードをコンパイルしないため、Python でのビルドはあまり意味がありません。

CI 関連のものに関しては、知っておく必要がある django の 3 つのコマンドがあります。

  • ./manage.py test すべてのファイルからテストを実行しtests.pyます。unittestこれらは基本的に、Python パッケージであるに対する django 固有の拡張機能です。
  • ./manage.py collectstatic選択したディレクトリに静的ファイルを収集します。すべてのビットをまとめて静的メディア サーバーに存在させるのに非常に便利です。これがどのように機能するかについては、静的ファイルのハウツーをご覧ください。
  • これにはSouthが必要です。これ./manage.py schemamigration app --auto && ./manage.py migrate appにより、モデルの変更が基になる SQL スキーマに適用されます。基本的に、モデルを変更しただけで南を使用しない場合、新しいフィールドが古い SQL スキーマにマップされず、モデルを永続化できないため、Django は非常に混乱します。south がサポートするスキーマの移行により、データが入力された既存のデータベースをアップグレードできます。自動化する前に手動で行う価値があります。
  • また、実行するカスタム管理コマンドを記述できることも指摘しておく必要があります./manage.py whatever you like。これにはかなりの可能性があります。たとえば、cron ジョブで実行するコマンドとして管理コマンドを使用しました。アプリケーションの管理者向けのインタラクティブなコマンドを構築することもできます。もちろん、展開とテストも可能です。

これらがどのように処理されるかは、使用可能なセットアップと選択したツールによって異なります。

コンパイル時: Python でのビルドに最も近いのは、バイナリを生成するフリーズ、別名 py2exe または cxfreeze です。ただし、これらはすべて、python バイトコードを exe に格納し、インタープリターを介して渡すだけであることに注意してください。これはとにかく共有オブジェクトです。また、django アプリを cxfreeze することはできません。これは、django 自体が実行時に発生する動的インポートを使用するため、本質的にコンパイル時のツールである cxfreeze で評価できないためです。したがって、建物を行う必要があるタスクとして割り引いてください。ディレクトリにファイルが表示.pycされる場合があります。前回の pyc 以降に変更が加えられた場合、python は python スクリプトを python バイトコードに変換します。変更が行われていない場合は、pyc前回のファイル。Python バイトコードが実行されるため、これは実際にはパフォーマンスの面での高速化ではなく、読み込み時間だけです。

于 2011-07-21T23:51:13.780 に答える
0

(Django) python 環境を管理および再現するために何かが必要な場合は、Buildout の代わりに virtualenv を使用した pip を検討することをお勧めます。

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

buildout と pip の両方の経験があり、pip は buildout よりも簡単で、信頼性が高く、スケーリングが容易であることがわかりました。

于 2011-07-24T10:33:36.660 に答える