首页 > 解决方案 > Pyramid 找不到子模块的包含函数

问题描述

我想将路由配置正确外包到相应的模块中。对于那个金字塔文档指定我可以定义:

def includeme(config):
    config.add_route('foo_list', '/foo', factory='.api.foo.models.example_factory')

我的文件夹结构如下:

    /projectname/api/foo

在示例文件夹中,有以下文件:

__init__.py (with includeme()-function)
views.py
models.py

现在我需要在应用程序初始化中包含这个“foo”模块。这就是我定义的原因:

文件:

    /projectname/__init__.py

代码:

def main(global_config, **settings):
    config.include('.api.foo')

但是当我尝试运行应用程序时,金字塔会抛出以下异常:

    ModuleNotFoundError: No module named 'projectname.api.foo.api'

(这是复制和粘贴的 - 它搜索 /api/foo/api - 这是不正确的)

有没有我没有考虑到的配置因素?我尝试了以下方法:

Changing the /projectname/__init__.py code into:
    config.include('.api.foo.includeme')

这会导致相同的错误。

如果我将函数从 includeme 重命名为其他任何内容,它会说

    pyramid.exceptions.ConfigurationError: module 'projectname.api.foo' has no attribute 'includeme'

有什么建议吗?

标签: pythonpyramid

解决方案


推荐阅读