2010-10-05 65 views
1

我最近使用Fabric爲我的Django項目設置了部署解決方案。基本的工作流程如下:從具有不同頂級文件夾名稱的Django項目導入

  1. 查看服務器上git的最新源代碼。
  2. 將其複製到'releases'目錄並將時間戳添加到目錄名稱。
  3. 更新'當前'符號鏈接指向最新版本。

這一切正常,唯一的問題是,由於頂層目錄下有一個名爲「當前」符號鏈接並指向像「project_name_2010_10_04」一個文件夾中所有以下import語句將失敗:

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文檔提及使用項目名稱來處理各種事情。

因此,總結我的問題,有沒有辦法指定一個不同於實際目錄名稱的包名?

+0

我想你應該可以導入'從app'開始。應用程序意味着可重用,將它們與任何一個項目綁定都沒有意義。 – 2010-10-05 17:05:19

回答

4

簡而言之,你不應該在任何地方使用硬編碼的項目名稱,特別是在特定的應用程序中,因爲它只是徹底打破了它們的可移植性和可重用性。

0

看來,您有manage.py,urls.py和朋友直接在您的存儲庫的根目錄。

這是不正確的:在頂層,應該有setup.py,requirements.txt和項目目錄,其中manage.py和朋友應該居住。

(OK,如果你想成爲與非Python的世界更加兼容,應該住頂層src/目錄中...)

相關問題