我一直在说明
DOMAIN dictionary missing or wrong.
我的文件夹结构如下所示
.
└──myapp
├── app.py
├── app.wsgi
└── settings.py
所以Eve声明无法找到Dictionary,即使它已在设置文件中定义。我在virtualenv中运行这个应用程序,我的apache虚拟主机指向wsgi文件。
答案 0 :(得分:1)
当我遇到这个问题时(我在@doru提到的帖子中有评论)实际上是DOMAIN定义的问题。
不幸的是,对于缺少和错误的DOMAIN定义都有一个常见的错误消息。
我将import pdb;pdb.set_trace()
放入flaskapp.py\Eve\__init__()
在这里,您会看到对validate_domain_struct
这可以帮助您缩小问题范围。
要修改的文件(暂时)是<path_to_virtualenv>/lib/python<version>/site-packages/eve/flaskapp.py
完成后,删除调试器语句;)
答案 1 :(得分:-1)
也可以点击这一点,经过一些根深蒂固,这是我已经达成的结论。
对我来说,夏娃找到了一个不直观的查找设置文件的方法。你可以看到它in the code。它执行以下操作:'EVE_SETTINGS'
获取设置文件的名称,否则从作为settings=
关键字参数传递给Eve()
构造函数的字符串获取默认值{{ 1}}。'settings.py'
目录,查看该文件是否存在。我觉得这很有用,可以成为第一个选择。sys.argv[0]
中的每个目录以尝试查找设置文件。这意味着,如果您环境中安装的任何模块在其中的任何位置都有一个名为sys.path
的文件,夏娃会尝试使用它。所以,我的问题是我从装有django的virtualenv运行Eve。 Django中有(至少一个)样本settings.py
文件。所以夏娃试图用它。它崩溃了。谢谢你。
另请注意,它根本不会在当前目录中查找设置文件(除非它在'settings.py'
中)。这对我来说似乎有点疯狂。
我在Eve的github页面上提出了an issue。