试着用一个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
。但是,如果我将目录命名为foo
,snakeeyes
或blah
,我就不会收到错误,应用程序会按预期运行。是否有一个原因?目录不能被命名为网站吗?在python中还有其他任何重定的目标名称吗?
答案 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.