我有一个Django应用程序,我使用Buildout设置如下:
/workspace
/bin
/src
/myproject
settings.py
/myapp
views.py
...
bootstrap.py
buildout.cfg
setup.py
问题是我想在python路径上同时使用myproject.settings
和myapp
。我需要路径上的myproject.settings
,因此djangorecipe可以导入它。我希望路径上有myapp
,这样我就不必一直写import myproject.myapp
。
现在我在Python路径中同时拥有/workspace/src
和/workspace/src/myproject
,但这感觉就像一个黑客,如果可能存在import some_module
可能存在的情况,实际上让我担心令人困惑的解决方案模式,因为我有两个彼此是父子的目录。
所以问题是:
是否有可接受的方法来解决这个问题?
在路径中有一个目录及其子目录真的很糟糕吗?
答案 0 :(得分:0)
没有问题,import some_module
导入程序会在sys.path
some_module/__init__.py
和some_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'},
...