我在Docker中有一个Flask应用程序。我正在尝试像这样运行它:
uwsgi --socket 0.0.0.0:80 --plugins python3 --protocol http --module app.app:app -p 2 --enable-threads
uWSGI启动,初始化Python(我已经检查了它是否可能是错误的解释器问题,但它正在初始化正确的解释器),然后执行以下操作:
*** Operational MODE: preforking ***
Traceback (most recent call last):
File "./app/app.py", line 1, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
这里要注意的是它肯定已安装。如果我猛扑到容器中并冻结 pip ,它就会显示出来。如果运行Python shell,则可以毫无问题地导入它。如果我尝试手动再次启动 uwsgi (杀死前一个以释放端口),则会遇到相同的问题。如果我只运行 python app / app.py ,则不会出现此类问题。
由于我的主程序包(应用程序)的名称与创建的Flask应用程序的名称相同,所以我将Flasks的应用程序重命名(如this问题中所示),但这似乎不是问题所在。还有什么可能导致此问题?如果有帮助,这就是我项目的结构:
├── Dockerfile
├── LICENSE
├── README.md
├── app
│ ├── __init__.py
│ ├── submodule1
│ │ ├── __init__.py
│ │ └── somefile1.py
│ ├── app.py
│ ├── config.py
│ ├── submodule2
│ │ ├── __init__.py
│ │ ├── somefile2.py
│ ├── submodule3
│ │ ├── __init__.py
│ │ └── somefile3.py
├── docker-compose.yml
├── requirements.txt
└── startup.sh <-- this is where uwsgi is started