2010-10-05 222 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/目录中...)

相关问题