首页 > 解决方案 > ./test.py 中的“Flask ImportError:没有名为 Flask 的模块”

问题描述

我尝试编写如下结构的微服务,但是当我运行 ./test.py 时出现错误:

Traceback (most recent call last):
  File "./test.py", line 2, in <module>
    from authorize import create_app
  File "~/projects/authorize/authorize/__init__.py", line 1, in <module>
    from flask import Flask
ModuleNotFoundError: No module named 'flask'

我的项目结构:

authorize
├── authorize
│   ├── config
│   │   ├── config.py
│   │   ├── __init__.py
│   ├── __init__.py
├── test.py

我项目中的每个文件都是:

/授权/test.py:

#!/usr/bin/python
from authorize import create_app

app = create_app()

if __name__ == "__main__":
    app.run()

/授权/授权/__init__.py:

from flask import Flask

from authorize.config import Config

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)   
    return app

/授权/授权/配置/__init__.py:

from authorize.config.config import Config

/授权/授权/配置/config.py:

from os import environ

class Config:

    ENV = environ.get("MY_AUTH_ENV", "production")
    DEBUG = int(environ.get("MY_AUTH_DEBUG","0"))
    TESTING = int(environ.get("MY_AUTH_TESTING", "0"))

我在 venv 中隔离了我的项目,需求包是:

click==8.0.1
Flask==2.0.1
itsdangerous==2.0.1
Jinja2==3.0.1
MarkupSafe==2.0.1
pkg_resources==0.0.0
python-dotenv==0.19.0
simplejson==3.17.3
watchdog==2.1.3
Werkzeug==2.0.1

我会感谢你的帮助。

标签: flaskmicroservicesdevopspython-3.8

解决方案


我发现我可以使用:

#!/usr/bin/env python3

代替

#!/usr/bin/python

在文件 test.py 中,它可以工作。

但我仍然有一个问题,下面的代码 authorize/authorize/__init__.py 获取我的环境变量但不能更改我的“应用程序”配置:

app.config.from_object(Config)   # Load configs from env variables

推荐阅读