从具有不同顶级文件夹名称的Django项目导入

时间:2010-10-05 14:26:29

标签: python django fabric importerror

我最近使用Fabric为我的Django项目设置了部署解决方案。基本工作流程为:

  1. 从服务器上的git中查看最新的来源。
  2. 将其复制到'releases'目录并为目录名称添加时间戳。
  3. 更新“当前”符号链接以指向最新版本。
  4. 这很好用,唯一的问题是,因为顶级目录是一个名为'current'的符号链接,并指向像'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文档使用项目名称进行各种事情。

    总结一下我的问题,有没有办法指定一个与实际目录名不同的包名?

2 个答案:

答案 0 :(得分:4)

简单地说,你真的不应该在任何地方使用硬编码的项目名称,特别是在特定的应用程序中,因为它只是完全破坏了它们的可移植性和可重用性。

答案 1 :(得分:0)

您好像manage.pyurls.py和朋友直接在您的存储库的根目录中。

这是不对的:在顶层,应该有setup.pyrequirements.txt和项目目录,其中manage.py和朋友应该居住。

(好吧,如果你想与非Python世界更兼容,它应该存在于顶级src/目录中......)