Я работаю программистом в компании, у которой сложная настройка репозиториев, поэтому они установили экземпляр EC2 со всеми необходимыми репозиториями и конфигурациями, и я подключаюсь к нему по ssh, чтобы работать над их Python ( Flask) серверный код. В качестве IDE я использую Jetbrains Gateway (он запускает экземпляр IDE на удаленном сервере, а затем вы подключаетесь к нему через локальный клиентский интерфейс, поэтому он выглядит так же, как PyCharm, но фактический код и функции IDE выполняются на удаленный сервер)
Я не могу понять, как отладить мой код. Раньше я использовал функцию отладки PyCharm, но чувствую себя потерянным в этой настройке.
Я просмотрел представление «Редактировать конфигурации» и увидел, что есть функция под названием «Сервер отладки Python», которая требует, чтобы я указал IP-адрес моего локального компьютера и порт, который он прослушивает, что затем сделает удаленный экземпляр EC2. TCP-соединение с. У меня нет статического IP-адреса, и я не уверен, что мой интернет-провайдер разрешает подобные входящие соединения, поэтому я поискал в Интернете службу, которая могла бы мне в этом помочь, и увидел, что ngrok упоминается в нескольких местах. .






В конце концов у меня это заработало, и я решил написать, как я это сделал, для всех, у кого в будущем возникнет такая проблема:
ngrok tcp --region=us --remote-addr=1.tcp.ngrok.io:12345 12345Edit Configurations в Jetbrains Gateway.
pydevd в среду Python, которую вы обычно используете для запуска сервера (будь то venv или базовый интерпретатор).
pip install pydevd-pycharm~=241.14494.200import pydevd_pycharm; pydevd_pycharm.settrace(...) где-нибудь в коде сервера приложений, где он будет запускаться (либо при запуске сервера приложений, либо при посещении маршрута, который вы хотите отладить).sudo systemctl start myappserver, вы можете найти приведенные ниже значения в файле в вашем каталоге /etc/systemd/system/. Итак, вы можете запустить что-то вроде cat /etc/systemd/system/myappserver.service.
File-->Settings-->Project: app_name-->Python Interpreter, прежде чем он появится в качестве опции в этом диалоговом окне.sudo systemctl stop myappserver.settrace(). Любые точки останова, которые вы добавляете в код, теперь должны работать (выполнение должно остановиться на точке останова).