Flask 权限错误:[Errno 13] 权限被拒绝

3
我正尝试使用/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

我已经为 Flask 应用程序文件夹授予了递归的 777 权限。
从上述堆栈跟踪中,我不确定出了什么问题。
任何帮助都将不胜感激。谢谢!
更新
我尝试使用 CentOS 7.6 的核心 Python(即 Python 2.7)来运行 Flask 应用程序,它可以正常工作!
我不确定为什么 Python 版本 3.5.6 安装在路径 /opt/mount1/python35 中后无法正常工作。

我认为这是一个Python安装问题。您预安装的Python2.7可以访问site-packages,但3.5不能,因为它是在外部位置显式安装的。如果您还没有使用适当的虚拟环境来处理安装,请务必这样做。您可以参考此链接https://binaykumarray.wordpress.com/2016/01/29/python-2-python-3-or-both/并再次尝试。 - binu.py
2个回答

8
错误13(权限错误)通常是通过更改端口号来解决。TCP/IP协议的端口号低于1024的被称为注册或特权端口号,用户不允许在这些端口上运行服务器。根据显示的第一个警告消息,我猜测您正在使用低端口号(可能是80)运行应用程序,但是如果您将其运行在另一个端口号上,例如4000或其他大于1024的端口,您将可以避免此错误。
您可能会发现这个链接有帮助:https://realpython.com/python-sockets/
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端口上吗? - dp7
如果出现这种情况,那么可能意味着应用程序已经在5000端口上运行。 - Victor
@Reese 不,我没有看到任何其他服务在5000端口运行。 - dp7
请使用以下命令进行检查:"netstat -tulpn | grep LISTEN",以确保端口未被占用。如果您收到错误消息 "Errno 13",则表示 Flask 无法绑定该端口,请尝试使用其他端口号,例如 "app.run(host='0.0.0.0', port=some_thing_higher)"。 - Victor
@Reese 也尝试将代码更改为 app.run(debug=True, host='0.0.0.0', port=8050),但仍然出现相同的错误。 - dp7
我尝试使用CentOS 7.6的核心Python库即Python 2.7运行Flask应用程序,并且它成功了!但是不确定为什么使用安装在/opt/mount1/python35路径下的Python版本3.5.6时无法正常工作。 - dp7

1

由于我已经单独安装了Python 3.5,并且安装在不同的路径下,因此我需要在文件顶部放置以下shebang来解决问题:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接