Gunicorn ImportError:仅当目录名是站点时才有模块名称app

时间:2017-05-20 02:20:36

标签: python flask gunicorn

试着用一个hello world app来获得gunicorn 这是我的项目目录结构

Project
  |_ config
  |  |_ ___init__.py
  |  |_ settings.py
  |
  |_ instance
  |  |_settings.py_production
  |
  |_ site
  |  |_ __init__.py
  |  |_ app.py
  |
  |_ .env
  |_ docker-compose.yml
  |_ Dockerfile
  |_ requirements.txt

我在docker容器中运行它,但是当我以交互模式进入容器时,会发生相同的行为。

当目录名为site且运行命令gunicorn -b 0.0.0.0:8000 --access-logfile - "site.app:create_app()"时,我收到错误ImportError: No module name app。但是,如果我将目录命名为foosnakeeyesblah,我就不会收到错误,应用程序会按预期运行。是否有一个原因?目录不能被命名为网站吗?在python中还有其他任何重定的目标名称吗?

1 个答案:

答案 0 :(得分:2)

site是python中standard library的一部分。我认为,但不是肯定的,你正在经历冲突。

site不是python中的保留字。如果您对标准关键字感兴趣,可以查看此SO帖子:Is the list of Python reserved words and builtins available in a library?

我认为您可以通过按照文档的指示禁止自动导入库来测试这是否是冲突:

This module is automatically imported during initialization. The automatic import can be suppressed using the interpreter’s -S option.