Cómo depurar remotamente en PyCharm

El problema que estoy enfrentando ahora:

  • Implemento el código Python en un host remoto a través de SSH
  • Los scripts pasan algunos argumentos y deben ser ejecutados por un usuario específico.
  • La configuración de ejecución / depuración de PyCharm que creo se conecta a través de SSH a través de un usuario diferente (no se puede conectar con el usuario que ejecuta los scripts)
  • Quiero realizar una depuración remota de este código a través de PyCharm … Logré hacer toda la configuración, solo obtengo errores de permiso.

¿Hay alguna manera de cómo puedo ejecutar / depurar los scripts como un usuario específico (como sudo su – usuario)?

He leído sobre la especificación de algunas opciones de Python Interpeter en la configuración de depuración remota de PyCharm, pero no conseguí una solución que funcionara.

Si desea una forma fácil y más flexible de ingresar al depurador de PyCharm, en lugar de tener necesariamente un botón de “juego” en PyCharm, puede usar la funcionalidad del servidor de depuración . He usado esto en situaciones donde ejecutar un código Python no es tan simple como ejecutar python ...

Consulte la documentación de depuración remota con un servidor de depuración de Python para obtener más detalles, pero aquí hay un resumen aproximado de cómo funciona:

  1. Cargue e instale el huevo auxiliar de depuración remota en su servidor (en OSX, estos se encuentran en /Applications/PyCharm.app/Contents/debug-eggs )
  2. Configure la configuración de ejecución del servidor de depuración remota: haga clic en el menú de configuración de ejecución desplegable, seleccione Edit configurations... , presione el botón + , elija Python remote debug .
    • Los detalles ingresados ​​aquí (de manera algo confusa) le indican al servidor remoto que ejecuta el script de Python cómo conectarse a la instancia de PyCharm de su computadora portátil.
    • establezca el Local host name en la dirección IP de su computadora
    • configure el port en cualquier puerto libre que pueda usar en su computadora portátil (por ejemplo, 8888 )
  3. Ahora siga las instrucciones restantes en ese cuadro de diálogo: copie y pegue las declaraciones de import y pydevd.settrace(...) en su código, específicamente donde desea que su código “llegue a un punto de interrupción”. Este es básicamente el equivalente de PyCharm de import pdb; pdb.set_trace() import pdb; pdb.set_trace() . Asegúrese de que el código modificado esté sincronizado con su servidor.
  4. Presione el botón de error (al lado de jugar; esto inicia el servidor de depuración de PyCharm), y ejecute su secuencia de comandos de Python como lo haría normalmente, bajo cualquier usuario, entorno, etc. Cuando se alcanza el punto de interrupción, PyCharm debería pasar al modo de depuración.

Tengo este (finalmente) trabajando con ssh RemoteForward abierto, así:

 ssh -R 5678:localhost:5678 user@ 

A continuación, inicie el script en esta sesión ssh. El host del script de Python debe conectarse a localhost: 5678 y, por supuesto, su depurador pycharm local debe escuchar 5678 (o cualquier puerto que elija)