settings.py应该和夏娃在哪里?

时间:2015-07-14 01:35:22

标签: flask eve

我一直在说明

DOMAIN dictionary missing or wrong.

我的文件夹结构如下所示

.
└──myapp
   ├── app.py
   ├── app.wsgi
   └── settings.py

所以Eve声明无法找到Dictionary,即使它已在设置文件中定义。我在virtualenv中运行这个应用程序,我的apache虚拟主机指向wsgi文件。

2 个答案:

答案 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。它执行以下操作:

  1. 如果设置,则从环境变量'EVE_SETTINGS'获取设置文件的名称,否则从作为settings=关键字参数传递给Eve()构造函数的字符串获取默认值{{ 1}}。
  2. 查看'settings.py'目录,查看该文件是否存在。我觉得这很有用,可以成为第一个选择。
  3. 遍历sys.argv[0]中的每个目录以尝试查找设置文件。这意味着,如果您环境中安装的任何模块在其中的任何位置都有一个名为sys.path的文件,夏娃会尝试使用它。
  4. 如果夏娃找不到,那么它就不会使用。
  5. 所以,我的问题是我从装有django的virtualenv运行Eve。 Django中有(至少一个)样本settings.py文件。所以夏娃试图用它。它崩溃了。谢谢你。

    另请注意,它根本不会在当前目录中查找设置文件(除非它在'settings.py'中)。这对我来说似乎有点疯狂。

    我在Eve的github页面上提出了an issue