異なるトップレベルのフォルダー名を持つDjangoプロジェクトからのインポート
-
28-09-2019 - |
質問
最近、Djangoプロジェクトの展開ソリューションを設定します ファブリック. 。基本的なワークフローは次のとおりです。
- サーバー上のGitの最新のソースをご覧ください。
- 「リリース」ディレクトリにコピーし、ディレクトリ名にタイムスタンプを追加します。
- 「現在」のシンリンクを更新して、最新のビルドを指します。
これは正常に機能します。問題のみです。トップレベルのディレクトリは「Current」と呼ばれるSymlinkであり、「project_name_2010_10_04」のようなフォルダーを指しているため、次のインポートステートメントはすべて失敗します。
from project_name.app import models
...
INSTALLED_APPS = (
'project_name.app'
)
...
urlpatterns = patterns('',
(r'^$', 'project_name.app.views.index'),
)
したがって、私が見つけたソリューションは、私のプロジェクトの「project_name」へのすべての参照を削除することであり、アプリは展開して正常に動作するようです(今のところ)。しかし、これは問題を解決する正しい方法のようには見えません...主に新しく作成されたDjangoプロジェクトでは、「urls.py」、 'settings.py'デフォルトでプロジェクト名を参照し、さまざまなDjangoドキュメントが言及しているためさまざまなものにプロジェクト名を使用します。
それで、私の問題をまとめるために、実際のディレクトリ名とは異なるパッケージ名を指定する方法はありますか?
解決
簡単に言えば、特に特定のアプリでは、プロジェクト名がハードコーディングされているプロジェクト名をどこにでも使用してはなりません。
他のヒント
あなたが持っているようです manage.py
, urls.py
リポジトリのルートに直接友達。
これは正しくありません:トップレベルでは、 setup.py
, requirements.txt
およびその内部のプロジェクトディレクトリ manage.py
そして友達は生きるべきです。
(OK、あなたが非パイソンの世界とより互換性がありたいなら、それはトップレベルの中に住むべきです src/
ディレクトリ...)