如何在Django中驯服第三方贡献的位置

时间:2009-08-21 00:59:43

标签: python django

我有一个像这样布局的django项目......

  • 的myproject
    • 应用
    • 媒体
    • 模板
    • django的
    • 注册
    • SORL
    • typogrify

我想把它改成这个......

  • 的myproject
    • 应用
    • 媒体
    • 模板
    • 站点DEPS
      • django的
      • 注册
      • SORL
      • typogrify

当我尝试它时,'site-dependencies'全部中断。有没有办法实现这个结构?我试着在没有喜悦的情况下向PYTHONPATH添加site-deps ......

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

PYTHONPATH按照列出路径的顺序搜索

PythonPath "[ '/myproject', '/myproject/site-deps' ] + sys.path"

不同
PythonPath "[ '/myproject/site-deps', '/myproject' ] + sys.path"

以前的命令失败了;也许是因为它已经看过它已经看过网站,并且没有必要再看了。

后一种命令有效。

答案 2 :(得分:0)

确保站点依赖项,django,registration,sorl和typogrify都包含__init__.py个文件。

答案 3 :(得分:0)

如何在站点依赖项下导入包?

稍微偏离你的问题主题,但我从不喜欢Django的“默认”项目布局,所以我有一个脚本可以像我这样放置我的项目:

myproject/
    apps/

    vendor/
    vendor/django/

    config/__init__.py
    config/urls.py
    config/settings/
    config/settings/__init__.py
    config/settings/base.py
    config/settings/hostname.py

    templates/
    media/

    script/manage.py

包含的manage.py被调整为将配置,应用和供应商添加到python路径('myproject'本身不在python路径中)并导入config / settings / hostname.py作为设置模块(其中hostname将是计算机的实际主机名)。任何第三方应用程序都在供应商中(例如,django本身),此项目的应用程序将进入apps目录。

这有点不同寻常,但我喜欢这个设置。