【问题标题】:How to tame the location of third party contributions in Django如何在 Django 中驯服第三方贡献的位置
【发布时间】:2009-08-21 00:59:43
【问题描述】:

我有一个 django 项目,它的布局是这样的......

  • 我的项目
    • 应用程序
    • 媒体
    • 模板
    • django
    • 注册
    • 抱歉
    • 排版

我想改成这个...

  • 我的项目
    • 应用程序
    • 媒体
    • 模板
    • 站点部门
      • django
      • 注册
      • 抱歉
      • 排版

当我尝试它时,“站点依赖项”全部中断。有没有办法实现这个结构?我尝试将站点依赖添加到 PYTHONPATH 中,但并不高兴...

【问题讨论】:

    标签: python django


    【解决方案1】:
    【解决方案2】:

    PYTHONPATH 按路径列出的顺序搜索

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

    不一样

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

    前一个命令失败;也许是因为它认为它已经查看了站点部门,并且没有再查看的意义。

    后一种顺序有效。

    【讨论】:

      【解决方案3】:

      确保 site-dependencies、django、registration、sorl 和typogrify 都包含__init__.py 文件。

      【讨论】:

        【解决方案4】:

        你是如何导入站点依赖项下的包的?

        与您的问题略有不同,但我从不喜欢 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 作为设置模块(主机名将是计算机的实际主机名)。任何第 3 方应用程序都进入供应商(例如,django 本身),并且该项目的应用程序进入应用程序目录。

        这有点不合常规,但我喜欢这种设置。

        【讨论】:

          猜你喜欢
          • 2017-03-12
          • 2015-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多