7

コード管理にgitを使用して、djangoプロジェクトを開発しています。メインプロジェクトにはサブモジュールとして多数のアプリがあり、それぞれを個別に使用できるため、それぞれが個別のgitリポジトリにあります。これらのアプリはすべて開発中であり、少なくとも1つは別のプロジェクトからフォークされています。これらのアプリはpip​​を介してインストールできます。リポジトリのクローンを作成すると、ルートにsetup.pyやREADMEなどがあり、サブフォルダーに実際のアプリがあります。

アプリをpipインストールすると、作業コードはgit管理下のフォルダーとは別の場所にあるため、コードを変更するたびに、必要なコードを変更しますpip install(または、このための別のpipコマンドはありますか?) Pythonが探しているコードを更新するには

私はpip install -e上記の状況を防ぐために使用することができます。ただし、各アプリを別々のフォルダーに複製する必要があります。アプリを複製して保持することはできず、project/apps両方ともsetup.pyをにドロップしようとしproject/apps/fooます。代わりに、fooのクローンを作成する必要がありますが、実際のコードはにあります。これは私を醜く、あまりジャンゴっぽくないと思います。project/apps/barproject/appsproject/apps/fooproject/apps/foo/foo

私がやろうとしていることをするための他のもっときれいな方法はありますか?

4

1 に答える 1

3

あなたが本当に使いたいのは、プロジェクトのvirtualenvと組み合わせた(gitサブモジュールを使用するのではなく)要件ファイルだと思います。

要件ファイルを使用すると、次のように、特定のブランチまたはコミットから直接リポジトリのクローンを作成できます。

Requirements.txt:

Django==1.4.1
South==0.7.6
git+git://github.com/fabric/fabric#egg=Fabric
git+git://github.com/toastdriven/django-tastypie.git@876c0541e2531d3b6e070ffab906f7c6e359c427#egg=django-tastypie

次に、を実行できますpip install -r requirements.txt

tastypieの例から、pipインストールを特定のコミットにロックできることがわかります(virtualenvにとどまっている限り問題ありません)。これは、サブモジュールが実行するのと基本的に同じですが、gitリポジトリやファイルを乱雑にすることはありません。とにかく調達する別の場所に実際にインストールする必要がある場合に、パッケージを使用して構造化します。

于 2012-09-26T01:42:33.480 に答える