Python 烧瓶不适用于覆盆子皮
首先,我想说的是,我有在MacOS和Windows10上使用flask的源代码,很多人都在开发这个网站。我们希望在Raspberry Pi 3 B+中运行我们的源代码。我已经在RPI上安装了flask和python。详情如下:Python 烧瓶不适用于覆盆子皮,python,flask,raspberry-pi,Python,Flask,Raspberry Pi,首先,我想说的是,我有在MacOS和Windows10上使用flask的源代码,很多人都在开发这个网站。我们希望在Raspberry Pi 3 B+中运行我们的源代码。我已经在RPI上安装了flask和python。详情如下: flask --version Flask 0.12.1 Python 3.5.3 (default, Sep 27 2018, 17:25:39) 我的MacOS之间唯一的区别是Python是3.7.5,Flask是1.0.2。我多次尝试在RPI上更新python
flask --version
Flask 0.12.1
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
我的MacOS之间唯一的区别是Python是3.7.5,Flask是1.0.2。我多次尝试在RPI上更新python和flask,它总是安装相同的版本
这就是版本大小写否定的地方,我在RPI中创建了一个任意python文件:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def test():
return "HELLO"
if __name__ == '__main__':
app.run(debug = True, port=8080)
这在RPI的本地主机上运行flask服务器没有问题
问题是当我尝试通过以下方式在RPI上运行源代码时:
export FLASK_APP=SmartLock
export FLASK_ENV=development
flask run
我得到以下信息:
pi@raspberrypi:~/Downloads/CSI4999 $ export FLASK_APP=SmartLock
pi@raspberrypi:~/Downloads/CSI4999 $ flask run
Usage: flask run [OPTIONS]
Error: Failed to find application in module "SmartLock". Are you sure it contains a Flask application? Maybe you wrapped it in a WSGI middleware or you are using a factory function.
我的结构
CSI4999
|
SmartLock
|
-static
-templates
__init__.py
other modules
我从CSI4999内部运行命令,就像在PC上一样。除非Raspberry Pi需要不同的结构,否则我不明白为什么它在MacOS和Windows 10上运行,而不是在RPI上运行
我搜索了烧瓶文档,我也尝试了[和互联网没有任何帮助
我甚至试着做:
python -m flask run
但这会回来的
File "/usr/lib/python3.5/socketserver.py", line 454, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
如有任何意见,将不胜感激
[更新:]
我已经安装了Python 3.7和Flask 1.1
烧瓶路径为:
路径:/usr/lib/python3/dist-packages/flask
里面pi@raspberrypi:~/Downloads/CSI4999/
返回:
* Serving Flask app "SmartLock"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
/usr/local/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py:835: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning.
'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
Traceback (most recent call last):
File "/usr/local/bin/flask", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 966, in main
cli.main(prog_name="python -m flask" if as_module else None)
File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 586, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 860, in run_command
extra_files=extra_files,
File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 1012, in run_simple
inner()
File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 965, in inner
fd=fd,
File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 808, in make_server
host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd
File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 701, in __init__
HTTPServer.__init__(self, server_address, handler)
File "/usr/local/lib/python3.7/socketserver.py", line 452, in __init__
self.server_bind()
File "/usr/local/lib/python3.7/http/server.py", line 137, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/local/lib/python3.7/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
这意味着烧瓶运行并找到模块。现在这是另一个问题。
有什么想法吗
[更新]
在SD卡上重新刷新RASPIAN解决了问题。仅使用PIP3安装库看起来您可能意外地将一个Python2.7和一个Python3安装的烧瓶混合在一起,这很容易做到。在您的情况下,我很想用Raspbian的新副本重新对SD卡进行映像,然后小心地执行
pip3 install flask
而不是
pip install flask
然后要注意始终使用python的python intead。您能确认~/Downloads/CSI4999/SmartLock/test.py,即您的Flask应用程序存在并且具有适当的权限/所有者吗?@Flux test.py是桌面上的常规python脚本。运行命令:python3 test.py会按照Flask.i chmod 777整个结构的预期执行所有操作包括文件。谢谢,我也得出了这个结论。更新显示了新的但旧的错误。最后的办法是重新映像sd car。根据您的设置,您甚至可能希望将/usr/bin/python和/usr/bin/pip作为这些程序的python3版本的符号链接。更新:我相信我必须使用许多版本的flask和/或pip和/或python.Ma这些路径的刷新是混合的,重新刷新SD卡就成功了。
* Serving Flask app "SmartLock"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
/usr/local/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py:835: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning.
'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
Traceback (most recent call last):
File "/usr/local/bin/flask", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 966, in main
cli.main(prog_name="python -m flask" if as_module else None)
File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 586, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 860, in run_command
extra_files=extra_files,
File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 1012, in run_simple
inner()
File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 965, in inner
fd=fd,
File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 808, in make_server
host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd
File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 701, in __init__
HTTPServer.__init__(self, server_address, handler)
File "/usr/local/lib/python3.7/socketserver.py", line 452, in __init__
self.server_bind()
File "/usr/local/lib/python3.7/http/server.py", line 137, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/local/lib/python3.7/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
pip3 install flask
pip install flask