22

私は Django で最初のサイトを作成しようとしています。そこからインスピレーションを得るサンプルアプリを探していると、「再利用可能なアプリ」と呼ばれる用語に常に出くわします。

再利用可能なアプリの概念は簡単に理解できますが、Django でアプリを再利用する方法は、私にとってはまったくわかりません。ビジネス全体で私を悩ませているいくつかの質問は次のとおりです。

既存の Django アプリを再利用するための推奨される方法は何ですか? どこに置き、どのように参照するのですか?

私が理解していることから、「PYTHONPATH」に配置することをお勧めしますが、アクセスが制限されているリモートの場所(ホスティングサービスなど)にアプリをデプロイする必要があるとすぐに壊れます。

したがって、ローカル コンピューターでサイトを開発し、ftp アクセスしかできない ISP に展開する場合、サード パーティの Django アプリを再利用して、サイトを展開してもサイトが機能し続けるようにするにはどうすればよいですか (たとえば、私が信頼できる唯一のことは、サービス プロバイダーに Python 2.5 と Django 1.x がインストールされていることです)。

Django プロジェクトを整理して、使用したいすべての再利用可能なアプリと一緒に簡単に展開できるようにするにはどうすればよいですか?

4

2 に答える 2

28

一般に、再利用可能なアプリを使用するために必要なのはsys.path、Python コードからインポートできるようにすることだけです。ほとんどの場合 (作成者がベスト プラクティスに従っている場合)、再利用可能なアプリの tarball またはバンドルには、ドキュメント、README、setup.pyおよび実際のアプリを含むサブディレクトリを含む最上位ディレクトリが含まれます (例については、 django-votingを参照してください。アプリ自体は「voting」サブディレクトリにあります)。このサブディレクトリは、Python パスに配置する必要があるものです。それを行うための可能な方法は次のとおりです。

  • running pip install appname、アプリがPyPIにアップロードされている場合(最近はほとんどがそうです)
  • でアプリをインストールしますsetup.py install(これは と同じ結果になりpip install appnameますが、最初に自分でコードをダウンロードして解凍する必要があります。pip がそれを行います)
  • コード ディレクトリを Python サイト パッケージ ディレクトリに手動でシンボリック リンクする
  • virtualenvのようなソフトウェアを使用して、独自の site-packages ディレクトリを持つ「仮想 Python 環境」を作成し、その virtualenv をアクティブにして実行するsetup.py installpip install appname、virtualenv の site-packages にアプリを配置またはシンボリック リンクします (すべての "グローバル将来の健全性を重視する場合は、インストール」オプション)
  • さまざまなアプリを配置する予定のディレクトリにアプリケーションを配置し、そのディレクトリを PYTHONPATH 環境変数に追加します

Python インタープリターを起動して、(たとえば) ImportError を取得せずに「投票をインポート」できれば、適切な場所にあることがわかります。

FTP アクセスしかできないサーバーでは、唯一のオプションは実際には最後のオプションであり、彼らはそれを設定する必要があります。彼らが Django をサポートすると主張する場合、パッケージをアップロードできる場所を提供する必要があり、Python でインポートできるようになりますあなたのウェブホストの詳細を知らなければ、彼らがあなたのためにそれをどのように構成しているかを言うことは不可能です.

于 2009-02-17T15:59:50.897 に答える
2

古い質問ですが、私がやっていることは次のとおりです。

バージョン管理システム (VCS) を使用している場合は、ソフトウェアに必要な再利用可能なすべてのアプリとライブラリ (django を含む) を VCS に配置することをお勧めします。それらをプロジェクト ルートの直下に配置したくない場合は、settings.py を変更してそれらの場所を sys.path に追加できます。

その後の展開は、VCS リポジトリを使用したい場所に複製またはチェックアウトするだけです。

これには、次の 2 つの利点があります。

  • バージョンの不一致。ソフトウェアは常に、展開時に利用可能だったバージョンではなく、テストしたバージョンを使用します。
  • 複数の人がプロジェクトに取り組んでいる場合、他の誰も依存関係のインストールに対処する必要はありません。

コンポーネントのバージョンを更新するときは、VCS で更新し、それを介して展開に更新を伝達します。

于 2010-09-14T15:01:39.937 に答える