uWSGI为什么无法导入实际安装的软件包?

时间:2019-12-30 17:51:06

标签: python uwsgi

我在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

0 个答案:

没有答案