2009-06-09 2 views
1

実用的なDjangoプロジェクトの再利用可能なアプリケーションの章を見て、DjangoCon(Pycon?)講義を聞いた後、Pythonのパス、つまりサイトパッケージにインストールすることで、アプリケーションをプラグイン可能にすることに重点が置かれているようです。Djangoにインストールされたアプリ - バージョンはどうですか?

インストールされているアプリのいずれかのバージョンが変更された場合、どうなるのでしょうか。サイトパッケージにインストールされているアプリケーションの1つを更新すると、それを使用している現在のすべてのプロジェクトが中断されませんか?私はsettings.pyで何も気付かなかったので、あなたがインポートしようとしているアプリケーションのバージョンを指定しましょう。

Ruby/Railsでは、このような状況で宝石を凍結することができます。しかし、Python/Djangoで何をすべきでしょうか?

答えて

5

同じパッケージの複数のバージョンを持つことは面倒です(ただし、setuptoolsでも実行できます)。

私は、各プロジェクトをそれ自身のvirtualenvに入れる方がきれいだと分かりました。私たちはvirtualevwrapperを使ってvirtualenvsを簡単に管理し、--no-site-packagesオプションはすべてのプロジェクトを本当に自己完結型にし、マシン間で移植可能にします。

これはrecommended setup for mod_wsgi serversです。

+0

virtualenvをpipと組み合わせて使用​​すると、さらに優れたものになります。 – Apreche

+0

説明: '--no-site-packages'オプションは 'virtualenvwrapper'のmkvirtualenvコマンドに適用されます: 'mkvirtualenv --no-site-packages –

0

複数のDjangoサイトがある場合は、間違いなくあなたのDjangoアプリケーションをサイトパッケージに入れたくありません。

Ken Arnoldが答えたように、Ian Bickingのvirtualenv(Virtual Python Environment Builder)を使用するのが最も良い方法です。これは、Djangoの複数のバージョンを実行する必要がある場合に特に当てはまります。

しかし、PythonとDjangoの単一バージョンを実行できるのであれば、アプリケーションをプロジェクトディレクトリにインストールするほうが少し簡単かもしれません。外部のアプリケーションが更新された場合、このようにして、一度に1つずつ各プロジェクトをアップグレードすることができます。これは構造体Pinaxが一度に外部のDjangoアプリケーションに使用されていますが、(setuptools/distutilsの代わりに)virtualenv + pipを使用していると思います。

0

私たちは何をしていますか?

サイトパッケージには「第三者」のもののみを入れます。 Django、XLRD、PILなど

私たちは全体のプロジェクトをパッケージとDjangoプロジェクトの集合体として構成しています。各プロジェクトはサイト全体の一部です。ポート80とポート443(SSL)の2つの動作があります。

OverallProject/ 

    aPackage/ 
    anotherPackage/ 

    djangoProject80/ 
     settings.py 
     logging.ini 
     app_a_1/ 
      models.py # app a, version 1 schema 
     app_a_2/ 
      models.py # app a, version 2 schema 
     app_b_2/ 
      models.py 
     app_c_1/ 
      models.py 

    djangoProject443/ 

    test/ 
    tool/ 

私たちはアプリ名の一部としてバージョン番号を使用します。これはメジャーバージョン番号であり、 "uses-the-same-schema"はメジャーリリース互換性の1つの定義なので、スキーマに関連付けられています。

データを移行して、新しいバージョンで動作することを証明する必要があります。その後、古いバージョンを削除してデータベースからスキーマを削除することができます。両方のアプリケーションを並べて実行することはできないため、データの移行は難しい作業です。

ほとんどのアプリケーションには、現在のバージョンが1つだけインストールされています。

関連する問題