【问题标题】:Flask PermissionError: [Errno 13] Permission deniedFlask PermissionError: [Errno 13] 权限被拒绝
【发布时间】:2019-04-24 13:19:22
【问题描述】:

我正在尝试使用 /opt/mount1/python35/bin/python3.5 notification.py 运行 Flask 应用程序,但出现以下错误:

WARNING:tensorflow:From /opt/mount1/python35/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
 * Serving Flask app "notification" (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 "notification.py", line 19, in <module>
    app.run(debug=True)
  File "/opt/mount1/python35/lib/python3.5/site-packages/flask/app.py", line 943, in run
    run_simple(host, port, self, **options)
  File "/opt/mount1/python35/lib/python3.5/site-packages/werkzeug/serving.py", line 988, in run_simple
    run_with_reloader(inner, extra_files, reloader_interval, reloader_type)
  File "/opt/mount1/python35/lib/python3.5/site-packages/werkzeug/_reloader.py", line 332, in run_with_reloader
    sys.exit(reloader.restart_with_reloader())
  File "/opt/mount1/python35/lib/python3.5/site-packages/werkzeug/_reloader.py", line 176, in restart_with_reloader
    exit_code = subprocess.call(args, env=new_environ, close_fds=False)
  File "/opt/mount1/python35/lib/python3.5/subprocess.py", line 247, in call
    with Popen(*popenargs, **kwargs) as p:
  File "/opt/mount1/python35/lib/python3.5/subprocess.py", line 676, in __init__
    restore_signals, start_new_session)
  File "/opt/mount1/python35/lib/python3.5/subprocess.py", line 1289, in _execute_child
    raise child_exception_type(errno_num, err_msg)
PermissionError: [Errno 13] Permission denied

我已将 777 递归权限授予烧瓶应用程序文件夹。

从上面的堆栈跟踪中,我不确定出了什么问题。

任何帮助将不胜感激。谢谢!


更新

我尝试使用 CentOS 7.6 的核心 python 即 Python 2.7 运行 Flask 应用程序,它成功了!!

我不确定为什么它不适用于已从其 RPM 安装到路径 /opt/mount1/python35 的 python 版本 3.5.6

【问题讨论】:

  • 我认为是python安装问题。您预装的 python2.7 可以访问站点包,但 3.5 没有,因为它显式安装在外部位置。如果您还没有使用正确的 virtualenv 来处理安装,请这样做。你可以参考这个链接binaykumarray.wordpress.com/2016/01/29/…再试一次

标签: python python-3.x flask


【解决方案1】:

错误 13(您的权限错误)通常通过更改您的端口号来解决。低于 1024 的 TCP/IP 端口号是注册或“特权”端口号 - 不允许用户在其上运行服务器。从显示的第一条警告消息(关于生产环境中的服务器)中,我的猜测是您在低端口号(可能是 80)上运行应用程序,但是如果您在不同的端口号上运行它,比如 4000 或其他(超过 1024),您将避免此错误。

您可能会发现this link 很有帮助

摘录:

import socket

HOST = '127.0.0.1'  # Standard loopback interface address (localhost)
PORT = 65432        # Port to listen on (non-privileged ports are > 1023)

【讨论】:

  • 你可以在堆栈跟踪中找到:Running on http://127.0.0.1:5000/ .. 它不是在端口 5000 上运行吗?
  • 应该,那么这可能意味着应用程序已经在端口 5000 上运行。
  • @Reese 不,我没有看到任何其他服务在端口 5000 上运行
  • 用这个命令“netstat -tulpn | grep LISTEN”确认一下,如果你得到同样的错误“app.run(host='0.0.0.0', port= some_thing_higher)" 错误 Errno 13 表示 Flask 无法绑定。
  • @Reese 也尝试更改为 app.run(debug=True, host='0.0.0.0', port=8050) .. 仍然遇到同样的错误
【解决方案2】:

由于我已将 Python 3.5 单独安装在不同的路径中,因此我必须将以下 shebang 放在文件顶部以解决问题:

#!/opt/mount1/python35/bin/python3.5

【讨论】:

    猜你喜欢
    • 2015-07-17
    • 2016-07-25
    • 2018-11-18
    • 2020-07-01
    • 2016-11-12
    • 2019-11-09
    • 2020-06-06
    • 2021-11-11
    • 2020-02-27
    相关资源
    最近更新 更多