所以,这是我制作的一个文件(flaskblog.py(:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Home Page</h1>"
这是我第一次运行它的方式:
$ export FLASK_APP=flaskblog.py
$ flask run
以下是我在调试模式下运行它的方式:
$ export FLASK_APP=flaskblog.py
$ export FLASK_DEBUG=1
$ flask run
现在我想直接使用 python 运行应用程序。我首先更新了.py文件:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Home Page</h1>"
if __name__ == "__main__":
app.run()
这是我用来运行 python 文件的命令:
$ python3 flaskblog.py
它工作正常。现在我想在调试模式下运行应用程序。所以,我更新了文件:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Home Page</h1>"
if __name__ == "__main__":
app.run(debug=True) #Added ("debug=True") here
用于运行文件的命令:
$ python3 flaskblog.py
这是错误:
* Serving Flask app "flaskblog" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
Traceback (most recent call last):
File "flaskblog.py", line 9, in <module>
app.run(debug=True)
File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 943, in run
run_simple(host, port, self, **options)
File "/usr/local/lib/python3.6/dist-packages/werkzeug/serving.py", line 988, in run_simple
run_with_reloader(inner, extra_files, reloader_interval, reloader_type)
File "/usr/local/lib/python3.6/dist-packages/werkzeug/_reloader.py", line 332, in run_with_reloader
sys.exit(reloader.restart_with_reloader())
File "/usr/local/lib/python3.6/dist-packages/werkzeug/_reloader.py", line 176, in restart_with_reloader
exit_code = subprocess.call(args, env=new_environ, close_fds=False)
File "/usr/lib/python3.6/subprocess.py", line 267, in call
with Popen(*popenargs, **kwargs) as p:
File "/usr/lib/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: '/XXX/XXX/XXX/XXX/XXX/XXX/XXX/XXX/Flask_Blog/flaskblog.py'
我只是使用"XXX"而不是实际目录。任何帮助将不胜感激!
PS:所有代码都来自此视频:https://www.youtube.com/watch?v=MwZwr5Tvyxo&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH
看起来 Flask 出于某种原因试图直接运行./flaskblog.py
,而不是使用 python 二进制文件 ( python3 flaskblog.py
(,这是不起作用的,因为 flaskblog.py 不可执行。
因此,只需在 flaskblog.py 顶部添加以下行(shebang(
#!/usr/bin/env python3
。并使文件可执行:
chmod +x flaskblog.py
然后重试,使用 python3 flaskblog.py
或直接作为 ./flaskblog.py
。
我只是将.py文件的权限从 775 更改为 664,基本上从权限中删除了"x"。
将其从:
-rwxrwxr-x 1 ubuntu ubuntu
自:
-rw-rw-r-- 1 ubuntu ubuntu