python - Flask 在 Raspberry Pi 中找不到应用程序
问题描述
首先,我想说我有在 MacOS 和 Windows 10 上使用烧瓶的源代码(各种人正在开发该网站)。我们想在 Raspberry Pi 3 B+ 中运行我们的源代码。我已经在 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 和烧瓶,它总是会安装相同的)
这是版本案例否定的地方,我在 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)
python3 test.py
这在 RPI 的本地主机上运行烧瓶服务器没问题。
问题是当我尝试通过以下方式在 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 上运行。
我搜索了 Flask 文档(我也尝试了 [ https://flask.palletsprojects.com/en/1.1.x/tutorial/factory/])并且互联网没有任何帮助。
我什至试图这样做:
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 烧瓶 PATH 是:
PATH:/usr/lib/python3/dist-packages/flask
pi@raspberrypi:~ $ flask --version
Python 3.7.5
Flask 1.1.1
Werkzeug 0.16.1
里面pi@raspberrypi:~/Downloads/CSI4999/
FLASK_APP=SmartLock
flask run
返回:
* 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
这意味着烧瓶运行并找到模块。现在这是另一个问题。有任何想法吗?
[更新]
在 SDCARD 上刷新 RASPIAN 已解决问题。仅使用 PIP3 安装库
解决方案
看起来你可能不小心混合了 Python2.7 和 Python3 安装的 Flask,可悲的是,这很容易做到。在您的情况下,我很想用新的 Raspbian 副本重新映像 SD 卡,然后小心翼翼地做
pip3 install flask
代替
pip install flask
然后小心始终使用python3
intead of python
。
推荐阅读
- json - 解析递归特征playsafe json scala
- javascript - 试图在函数范围之外的javascript中使用变量
- android - 防止用户在 Facebook 和 Google 登录按钮上单击两次
- .htaccess - 如果我从 Google 访问,err_too_many_redirects 错误
- scala - spark根据前一行的旧值对列进行计算
- java - 如何在java中测试RMI程序
- azure - 我们如何在 Xamarin 表单中删除/自定义 Azure AD B2C 身份验证 webview 页面标题栏?
- logging - Stackdriver Logging、Logback 和 Logger 名称
- java - 混合实例和静态同步方法,得到意想不到的测试输出
- reactjs - 点击地图后刷新调用api