Ошибка разрешения Разрешение отклонено в простом базовом приложении Flask - PullRequest
1 голос
/ 06 апреля 2019

Я запускаю этот скрипт в системе Linux на основе vagrant. Это простой базовый код для запуска приложения фляги, я получаю эту ошибку:

повышение child_exception_type (errno_num, err_msg)
PermissionError: [Errno 13] В доступе отказано

Вот скрипт:

#!/usr/bin python3

from flask import Flask
app = Flask(__name__)

@app.route('/')
@app.route('/hello')
def helloworld():
    return 'Hello and Welcome to flask'

if __name__ == '__main__':
    app.debug = True
    app.run(host='0.0.0.0', port=5000)

И ошибка, которую я получил:

vagrant@vagrant:/vagrant$ python3 project.py
* Serving Flask app "project" (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://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
Traceback (most recent call last):
File "project.py", line 14, in <module>
app.run(host='0.0.0.0', port=5000)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 943,           in run run_simple(host, port, self, **options)
File "/usr/local/lib/python3.5/dist-packages/werkzeug/serving.py", line  988, in run_simple
run_with_reloader(inner, extra_files, reloader_interval, reloader_type)
File "/usr/local/lib/python3.5/dist-packages/werkzeug/_reloader.py", line 332, in run_with_reloader
sys.exit(reloader.restart_with_reloader())
File "/usr/local/lib/python3.5/dist-packages/werkzeug/_reloader.py", line 176, in restart_with_reloader
exit_code = subprocess.call(args, env=new_environ, close_fds=False)
File "/usr/lib/python3.5/subprocess.py", line 557, in call
with Popen(*popenargs, **kwargs) as p:
File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
raise child_exception_type(errno_num, err_msg)
PermissionError: [Errno 13] Permission denied

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Поскольку вы играете на виртуальной машине, созданной с помощью Vagrant, вы должны сначала выполнить что-то вроде

vagrant@vagrant:/vagrant$ sudo pip3 install flask

.Возможно, вы установили некоторые другие пакеты.В зависимости от того, какую базовую ОС вы используете, использование pip (или pip3) для установки на системном уровне (даже в виртуальной машине) может вызвать проблемы.

После борьбы с моей базовой установкой происходит искажениенекоторое время я теперь всегда использую virtualenv внутри виртуальных машин, чтобы все установки пакетов были локальными.

Держу пари, что

vagrant@vagrant:/vagrant$ sudo apt-get install -y python-virtualenv
vagrant@vagrant:/vagrant$ virtualenv --python=python3 venv
vagrant@vagrant:/vagrant$ venv/bin/pip install flask
vagrant@vagrant:/vagrant$ ven/bin/python project.py

даст вам лучший результат.

0 голосов
/ 06 апреля 2019

Может быть, это ошибка разрешения, так как Vagrant пытается запустить ваше приложение фляги и не имеет необходимых разрешений на выполнение?

Я говорю это из-за этой части вашей трассировки стека:

PermissionError: [Errno 13] В доступе отказано

и, похоже, происходит сбой в этой строке кода: app.run(host='0.0.0.0', port=5000)

Возможно, вы могли бы дать исполняемые права на ваш каталог, содержащий ваш проект фляги, и посмотреть, поможет ли это решить вашу проблему:

chmod -R 755 /path/to/directory

Надеюсь, это поможет!

...