我需要一些帮助。 我从Ubuntu 18.04.05 LTS终端(键入python filename.py)运行以下代码(使用Python 3.7),并且可以在网页(http://127.0.0.1:500/)上查看结果
但是,当我使用Spyder(v4.1.4)运行代码时,当我包含代码行app.config [“ DEBUG”] = True时遇到以下错误。或者,当我在if __name__ =='__main__'
语句中包含代码行app(debug = True)时,也会发生同样的事情。
如果我删除此行,则一切正常。
这个问题可能之前已经回答过,但是我无法从答案中找出解决方案。
app = Flask(__name__)
app.config["DEBUG"] = True
@app.route('/')
def hello():
return 'HELLO'
if __name__=='__main__':
#app.debug = True
app.run()
这是Python 3.7解释器的输出:
* Serving Flask app "__main__" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with inotify reloader
/home/name/anaconda3/bin/python: can't find '__main__' module in /home/name/Documents /name/Contents/Python/flask_project/api'
An exception has occurred, use %tb to see the full traceback.
SystemExit: 1
/home/name/anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3425: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
%tb
回溯(最近通话最近):
文件“”的第3行,在 app.run()
文件“ /home/name/anaconda3/lib/python3.7/site-packages/flask/app.py”,行990,正在运行 run_simple(主机,端口,自我,**选项)
文件“ /home/name/anaconda3/lib/python3.7/site-packages/werkzeug/serving.py”,行1050,在run_simple中 run_with_reloader(内部,额外文件,reloader_interval,reloader_type)
run_with_reloader中的第339行“ /home/name/anaconda3/lib/python3.7/site-packages/werkzeug/_reloader.py” sys.exit(reloader.restart_with_reloader())
SystemExit:1
答案 0 :(得分:0)
这可能是因为您使用anaconda3作为主要解释器。我的系统中安装了Anaconda,每当在使用flask时将其用作主要解释器时,都会出现很多错误。我建议您不要使用Anaconda,而要使用虚拟环境,而要使用“ vanilla” python。
pip install virtualenv
与其他框架不同,flask需要进行一些设置才能完成工作。并且由于需要设置,因此需要虚拟环境。那么,这个virtualenv有什么作用?它执行了名称所要求的工作,通过在子文件夹中安装python的过程以及项目中可能需要的其他必要内容来创建虚拟环境。
完成后,创建一个文件夹作为测试项目,而不是创建一个文件。之后,创建一个虚拟环境:
virtualenv name-of-the-sub-folder
名称可以是任何名称,我的工作流程始终将其命名为env
。
安装完成后,请执行以下操作激活虚拟环境:
source name-of-the-sub-folder/bin/activate
您可能会注意到您的终端与虚拟环境目录具有相同的词,这是正常现象,并且它还表明您实际上已将其激活。如果遇到任何问题,请参考此:
https://flask.palletsprojects.com/en/1.1.x/installation/
好的,下一步是创建python文件。您可以根据需要命名,对我来说,我命名为app.py
。 (注意:如果您使用的是spyder,请将项目的解释器更改为项目文件所在的python.exe。或者,如果您使用的是文本编辑器,请使用激活的终端运行代码python app.py
)
完成后,返回用于激活虚拟环境的终端,然后执行以下操作:
pip install flask
这会将框架安装在您的虚拟环境中,而不是安装在系统中。完成后,粘贴用于测试烧瓶的相同代码或使用下面粘贴的代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == "__main__":
app.run(debug=True)
if not os.path.exists('db.sqlite'):
db.create_all()