remote python pycharm remote-debugging

remote - pycharm siempre “carga ayudantes de pycharm” al mismo intérprete remoto de python cuando se inicia



pycharm remote project (5)

Este es un problema bien conocido que puede ser un obstáculo importante en la productividad, especialmente si utiliza instancias desechables en su flujo de trabajo. Esto lleva a un descanso forzoso del café de 20 minutos cada vez que desea conectarse a un sistema remoto. Inaceptable.

Parece que PyCharm crea un archivo build.txt en la carpeta de ayuda remota que solo tiene el número de compilación actual de PyCharm como su contenido, por ejemplo:

PY-171.4694.38

Por lo tanto, es posible cargar los ayudantes manualmente usando rsync en /Applications/PyCharm.app/Contents/helpers/ y, finalmente, creando manualmente un archivo build.txt con su número de compilación actual. Después de eso, PyCharm no debe intentar volver a subirlos.

Ejemplo:

$ rsync -avz /Applications/PyCharm.app/Contents/helpers/ cluster:/home/xapple/.pycharm_helpers/ $ echo "PY-171.4694.38" > /home/xapple/.pycharm_helpers/build.txt $ python /home/xapple/.pycharm_helpers/pydev/setup_cython.py build_ext --inplace

Cuando inicio PyCharm para un intérprete de Python remoto, siempre se ejecuta "Cargar ayudantes de PyCharm", incluso cuando la IP de la máquina remota es la misma y ya contiene ayudantes cargados anteriormente. ¿Es correcto el comportamiento?


La desactivación del firewall solucionó el problema en mi caso (macOS - Mojave). Tenga en cuenta que esta no es una solución general, ya que no se probó en ningún otro entorno / sistema operativo.


Según los documentos ,

PyCharm comprueba la versión de los ayudantes remotos en cada ejecución remota, por lo que si actualiza su versión de PyCharm, los nuevos ayudantes se cargarán automáticamente y no es necesario que vuelva a crear un intérprete remoto.


Solución rápida (menos de 3 segundos entre mí y digitalocean) inspirada en la excelente respuesta de xApple.
en el servidor remoto:

export SOURCE=<your ip> export PORT=9000 export HELPERS=$HOME/.pycharm_helpers # PyCharm Help -> About export BUILD=PY-172.4343.24 # 2017/10/11 cd $HELPERS rm -fr * # my OS - ubuntu, change firewall rules to yours if you''re not so lucky sudo ufw allow from $SOURCE proto tcp to any port $PORT netcat -l -v -p $PORT | tar xz # here you waiting for connection # after finish sudo ufw delete allow from $SOURCE proto tcp to any port $PORT echo -n $BUILD > build.txt python $HELPERS/pydev/setup_cython.py build_ext --inplace

en su estación de trabajo:

export TARGET=<remote server ip> export PORT=9000 export HELPERS=<path to helpers> # for me it''s $HOME/opt/pycharm-2016.3/helpers cd $HELPERS tar cfz - . | netcat -v $TARGET $PORT


Tenga en cuenta que, al menos tan tarde como la versión 2018.3.x, PyCharm también parece requerir que se vuelvan a cargar los ayudantes cuando la conexión de la red local también cambie, por algún motivo.

Lo que he observado en mi caso es que si, mientras PyCharm permanece en funcionamiento, reubico mi computadora portátil y me conecto a una LAN diferente , la próxima sesión de depuración remota que inicie activará la carga prolongada del ayudante. Resulta que los contenidos del directorio de ayudantes que se cargaron en este caso son exactamente idénticos a los contenidos ya presentes en ese directorio en el sistema remoto (los comparé), por lo que esta carga es totalmente superflua, pero PyCharm no puede detectar esto

Como no hay forma de que PyCharm sepa omitir o cancelar la carga automática de ayudantes, el único recurso es salir completamente de PyCharm (cerrar todas las ventanas abiertas del proyecto) después de cada cambio de conexión de red y reiniciar el IDE. En mi experiencia, esto hará que la carga del ayudante tenga éxito en la fase de "comprobación de los ayudantes remotos", antes de volver a cargar todos los ayudantes. Por supuesto, esto es una gran molestia si tiene varios proyectos abiertos, pero es más rápido que esperar (decenas de) minutos para que se complete la carga de ayudantes agonizante.

Todo lo que otros respondedores describen sobre el curso de acción que se debe tomar al cambiar las versiones de PyCharm es cierto. Es suficiente usar rsync, ftp, scp o lo que sea para transferir los contenidos del nuevo directorio de helpers locales (en Linux, un subdirectorio donde se instala la aplicación) al sistema remoto (en Linux, ~ / .pycharm_helpers, donde ~ es el directorio de inicio del nombre de usuario utilizado para la sesión de depuración remota), y actualice el build.txt remoto en el directorio de ayudantes con la nueva versión de PyCharm.