intellij - python interpreter pycharm
Intellij/Pycharm no puede depurar los módulos de Python (4)
El problema ya está solucionado desde PyCharm 4.5.2. Consulte el problema correspondiente en el rastreador de PyCharm: https://youtrack.jetbrains.com/issue/PY-15230
Utilizo las ediciones de la comunidad de PyCharm / IntelliJ de un wile para escribir y depurar los scripts de Python, pero ahora estoy tratando de depurar un módulo de Python , y PyCharm realiza un análisis incorrecto de las instrucciones de la línea de comandos, lo que provoca un error de ejecución, o tal vez esté haciendo Una mala configuración.
Esta es mi configuración de ejecución / depuración:
Y esto se ejecuta cuando ejecuto el módulo (no hay problemas aquí):
/usr/bin/python3.4 -m histraw
Pero cuando depuro, esta es la salida en la consola IntelliJ:
/usr/bin/python3.4 -m /opt/apps/pycharm/helpers/pydev/pydevd.py --multiproc --client 127.0.0.1 --port 57851 --file histraw
/usr/bin/python3.4: Error while finding spec for ''/opt/apps/pycharm/helpers/pydev/pydevd.py'' (<class ''ImportError''>: No module named ''/opt/apps/pycharm/helpers/pydev/pydevd'')
Process finished with exit code 1
Como puede ver, los parámetros están mal analizados, y después de la opción -m
se pasa una secuencia de comandos de depuración IntelliJ antes del nombre del módulo.
También intenté simplemente poner -m histraw
en el campo Script , pero no funciona, ese campo es solo para poner las rutas del script Python, no los módulos.
¿Algunas ideas?
Hay otra forma de hacerlo funcionar. Puede escribir un script de Python para ejecutar su módulo. Luego, simplemente configure PyCharm para ejecutar este script .
import sys
import os
import runpy
path = os.path.dirname(sys.modules[__name__].__file__)
path = os.path.join(path, ''..'')
sys.path.insert(0, path)
runpy.run_module(''<your module name>'', run_name="__main__",alter_sys=True)
Entonces el depurador funciona.
Me resultó más fácil crear un archivo de rutina de carga (debuglaunch.py) con el siguiente contenido.
from {package} import {file with __main__}
if __name__ == ''__main__'':
{file with __main__}.main()
Por ejemplo, para lanzar locustio en el depurador pycharm, creé debuglaunch.py así:
from locust import main
if __name__ == ''__main__'':
main.main()
Y configurado pycharm de la siguiente manera.
NOTA: Descubrí que no podía entrar en el depurador a menos que añadiera un punto de interrupción en main.main (). Eso puede ser específico de locustio, sin embargo.