pserve завершает работу сразу после запуска в отладчике Python VSCode - PullRequest
0 голосов
/ 17 мая 2019

У меня есть приложение Python-2.7 env Pyramid 1.4, которое я разрабатывал для OS X (10.14.5 на момент написания статьи).После активации env я могу запустить pserve из командной строки и протестировать приложение.Я хочу иметь возможность отладки из VSCode.Я настроил отладчик с настройкой Pyramid в launch.json:

        {
            "name": "Python: Pyramid Application",
            "type": "python",
            "request": "launch",
            "args": [
                "${workspaceFolder}/development.ini"
            ],
            "pyramid": true,
            "jinja": true
        }

Каждый раз, когда я запускаю отладчик из VSCode (F5), запускаются все ожидаемые команды, и они выглядят корректно:

$ source /my/app/path/env/bin/activate
$ cd /my/app/path ; env PYTHONIOENCODING=UTF-8 PYTHONUNBUFFERED=1 /my/app/path/env/bin/python /my/home/.vscode/extensions/ms-python.python-2019.4.12954/pythonFiles/ptvsd_launcher.py --default --client --host localhost --port 63836 /my/app/path/env/lib/python2.7/site-packages/pyramid-1.4-py2.7.egg/pyramid/scripts/pserve.py /my/app/path/development.ini 

Нет ошибок, но команда запуска завершается, и отладчик никогда не активируется.pserve не работает в фоновом режиме.панель инструментов отладки ненадолго появляется в верхней части окна редактора, но затем исчезает менее чем через секунду (так что я думаю, что есть краткие сеансы отладки, которые по какой-то причине заканчиваются)

я пытался изменить параметры в моей разработке.ini, чтобы использовать другой пирамидальный сервер main

[server:main]
; use = egg:waitress#main
use = egg:pyramid#wsgiref
host = 0.0.0.0
port = 6666

без разницы

на страницах Python VSCode очень мало информации.

Я бы хорошо добавил код вфайлы, которые мне нужны для отладки (мой запасной вариант pdb), но я бы с удовольствием воспользовался преимуществами отладчика VSCode.

Обратите внимание: если я вручную (вместо нажатия клавиши F5)введите

 cd /my/app/path ; env PYTHONIOENCODING=UTF-8 PYTHONUNBUFFERED=1 /my/app/path/env/bin/python /my/home/.vscode/extensions/ms-python.python-2019.4.12954/pythonFiles/ptvsd_launcher.py --default --client --host localhost --port 63836 /my/app/path/env/lib/python2.7/site-packages/pyramid-1.4-py2.7.egg/pyramid/scripts/pserve.py /my/app/path/development.ini

в терминале - я получаю socket.error: [Errno 61] Connection refused, я предполагаю, потому что отладчик VSCode уже выключился.

, если я выполняю следующее в том же окне терминала VSCode

/my/app/path/env/lib/python2.7/site-packages/pyramid-1.4-py2.7.egg/pyramid/scripts/pserve.py /my/app/path/development.ini

Мой сервер запускается нормально и обслуживает запросы.так что похоже на что-то связанное с лаунчером ptvsd.

есть идеи?

1 Ответ

1 голос
/ 17 мая 2019

Решение, которое я придумал (которое работает), состоит в том, чтобы изменить настройку пирамиды в launch.json, чтобы она выглядела следующим образом:

        {
            "name": "Python: Pyramid Application",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/env/bin/pserve",
            "args": [
                "${workspaceFolder}/development.ini"
            ],
            // "pyramid": true
            // "jinja": true
            "debugOptions": [
                "RedirectOutput",
            ]        
        }

В основном я заставляю отладчик запускать pserve с ручной настройкой. это работает, я могу достичь контрольных точек и увидеть значения переменных.

...