使用Buildout / djangorecipe布局Django应用程序的常用方法是什么?

时间:2011-07-15 05:33:40

标签: django buildout

我有一个Django应用程序,我使用Buildout设置如下:

/workspace
  /bin
  /src
    /myproject
      settings.py
      /myapp
         views.py
         ...
  bootstrap.py
  buildout.cfg
  setup.py

问题是我想在python路径上同时使用myproject.settingsmyapp。我需要路径上的myproject.settings,因此djangorecipe可以导入它。我希望路径上有myapp,这样我就不必一直写import myproject.myapp

现在我在Python路径中同时拥有/workspace/src/workspace/src/myproject,但这感觉就像一个黑客,如果可能存在import some_module可能存在的情况,实际上让我担心令人困惑的解决方案模式,因为我有两个彼此是父子的目录。

所以问题是:

是否有可接受的方法来解决这个问题?

在路径中有一个目录及其子目录真的很糟糕吗?

2 个答案:

答案 0 :(得分:0)

没有问题,import some_module导入程序会在sys.path some_module/__init__.pysome_module.py的{​​{1}}指定的每个文件夹中搜索。对于import myproject.some_module,它会搜索myproject模块,然后会尝试使用相同的算法在其中找到some_module

我使用相同的项目结构。

答案 1 :(得分:0)

如果您的buildout.cfg包含develop = .,并且您的setup.py定义的任何鸡蛋都包含在您的buildout / parts的依赖项中,那么您的setup.py定义的任何代码路径都将自动添加到sys.path中。只需确保您的setup.py包含src作为代码目录。一种方法是:

setup(name=...
...
      packages=find_packages('src'),
      package_dir = {'':'src'},
...