我正在尝试使用Flask创建一个应用程序。我已经成功完成了此操作,但是,我不确定为什么这次不起作用。一切似乎都处于正确的顺序。我一直在寻找答案,但是,由于一切似乎合乎逻辑,我仍然无法确定出了什么问题?但是,它仍然出问题了吗?
ZXM934/
app/
__innit__.py
views.py
venv/
run.py
以下是每个文件的内容:
run.py
# Importing app object which was created in __innit__.py file into app.py
from app import app
if __name__ == "__main__":
app.run()
__innit__.py
# This class will ultimately bring our entire application together.
from flask import Flask
# Creating Flask app.
app = Flask(__name__)
# Importing views file to avoid circular import.
from app import views
view.py
# This class represents the UI of our website.
# Importing app directory. As __innit__.py file is apart of this directory,
# this import treats it as a package.
from app import app
@app.route("/")
def public_home():
return "Homepage"
@app.route("/login")
def login():
return "<h1 style='color: red'>Login</h1>"
我在控制台中将环境变量设置如下:
export FLASK_APP=run.py
export FLASK_ENV=development
然后我运行以下命令:
flask run
发生以下错误:
flask.cli.NoAppException: While importing "run", an ImportError was raised:
Traceback (most recent call last):
File "/Users/zahidmalik-ramzan/Desktop/zxm934/venv/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
__import__(module_name)
File "/Users/zahidmalik-ramzan/Desktop/zxm934/run.py", line 2, in <module>
from app import app
ImportError: cannot import name 'app' from 'app' (unknown location)
我不明白自己在做什么错?
答案 0 :(得分:2)
您的问题出在文件名__innit__.py
上。
要让python理解文件夹是项目结构中的实际包,您需要在其中包含一个特殊文件,即__init.py__
ps:不包含double n 。
常规软件包通常实现为包含__init__.py文件的目录。导入常规包后,此__init__.py文件将隐式执行,并且其定义的对象将绑定到包命名空间中的名称。
结论:将您的__innit.py__
更改为__init.py__