Flask调试模式会显示"OSError:[Errno 8] Exec格式错误".使用python运行时 [英] Flask debug mode gives an "OSError: [Errno 8] Exec format error" when running using python

查看:59
本文介绍了Flask调试模式会显示"OSError:[Errno 8] Exec格式错误".使用python运行时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,这是我制作的文件(flaskblog.py):

So, here's a file I made (flaskblog.py):

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "<h1>Home Page</h1>"

这是我第一次运行它的方式:

Here's how I first ran it:

$ export FLASK_APP=flaskblog.py
$ flask run

这是我在调试模式下运行它的方式:

Here's how I ran it in debug mode:

$ export FLASK_APP=flaskblog.py
$ export FLASK_DEBUG=1
$ flask run

现在,我想直接使用python运行应用程序.我首先更新了.py文件:

Now I want to run the application directly using python. I first updated the .py file:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "<h1>Home Page</h1>"

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

这是我用来运行python文件的命令:

This is the command I used to run the python file:

$ python3 flaskblog.py

效果很好.现在,我想在调试模式下运行该应用程序.因此,我更新了文件:

It worked fine. Now I want to run the application in debug mode. So, I updated the file:

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",而不是实际的目录.任何帮助将不胜感激!

I just used "XXX" instead of the actual directories. Any help will be appreciated!

PS:所有代码均来自此视频: https://www.youtube.com/watch?v=MwZwr5Tvyxo&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH

PS: All the code is from this video: https://www.youtube.com/watch?v=MwZwr5Tvyxo&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH

推荐答案

Flask出于某种原因似乎正试图直接运行 ./flaskblog.py ,而不是使用python二进制文件( python3 flaskblog.py ),由于flaskblog.py无法执行,因此无法正常工作.

It looks like Flask is trying to run ./flaskblog.py directly for some reason, rather than with the python binary (python3 flaskblog.py), which is not working since flaskblog.py isn't executable.

因此,只需在flaskblog顶部添加以下行( shebang ).py

So just add the following line (shebang) at the top of flaskblog.py

#!/usr/bin/env python3

...并使文件可执行:

...and make the file executable:

chmod +x flaskblog.py

然后使用 python3 flaskblog.py 或直接以 ./flaskblog.py 重新尝试.

Then try again, either with python3 flaskblog.py or directly as ./flaskblog.py.

这篇关于Flask调试模式会显示"OSError:[Errno 8] Exec格式错误".使用python运行时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆