3

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

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

问题是我想要两者都myproject.settingsmyapppython 路径上。我需要myproject.settings在路径上,以便 djangorecipe 可以导入它。而且我想myapp在路上,这样我就不必一直写import myproject.myapp

现在我已经拥有了 Python 路径/workspace/src/workspace/src/myprojectPython 路径,但这感觉就像是一个 hack,实际上让我担心是否import some_module可能存在令人困惑的分辨率模式的情况,因为我有两个彼此是父子目录的目录。

所以问题是:

有一种公认的方式来解决这个问题吗?

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

4

2 回答 2

0

没有问题,在 import some_moduleimporter 上会在sys.pathfor some_module/__init__.py和指定的每个文件夹中进行搜索some_module.py。同样 for import myproject.some_module,它会搜索myproject模块,然后它会尝试some_module用相同的算法在其中找到。

我正在使用相同的项目结构。

于 2011-08-05T07:19:04.443 回答
0

如果你的buildout.cfgincludedevelop = .和你定义的任何 eggsetup.py被包含为你的 buildout/parts 的依赖项,那么你 setup.py 定义的任何代码路径都将自动添加到 sys.path。只需确保您的setup.py包含src作为代码目录即可。一种方法是:

setup(name=...
...
      packages=find_packages('src'),
      package_dir = {'':'src'},
...
于 2011-08-30T22:43:13.307 回答