Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶不适用于覆盆子皮_Python_Flask_Raspberry Pi - Fatal编程技术网

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

首先,我想说的是,我有在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,它总是安装相同的版本

这就是版本大小写否定的地方,我在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