IDE para Python

+1
0
-1

Este post es obsoleto, mas no las respuestas que recibió. Revisa mi último post acerca de Netbeans antes de leer esto.

Buscando un buen IDE para python hasta terminé haciendo una extensión para Netbeans.

De los IDEs disponibles desde ubuntu, me quedé con Stani's Python Editor, aunque tampoco lo he usado para proyectos muy grandes.
Ventajas: Muy buena función de autocompletar (no muestra la documentación al estilo javadoc en netbeans), vista uml y documentación con pydoc. También permite diseñar interfaces wx (de las que no sé mucho salvo que se ven como debe ser, ej: Deluge). Además tiene un depurador y una consola con autocompletar (pycrust). Hasta ahora es la mejor opción para Linux (para Windows, me quedo con PyScripter).

La principal desventaja de Stani's Python Editor es que se ve horrible y no se pueden cambiar los colores, volveremos a eso después...

Antes de continuar, anoto algunas (des)ventajas de otros IDEs disponibles en ubuntu:

gedit - Sólo ofrece resalte de sintaxis. Con la extensión de herramientas externas puedes configurarlo para que se ejecute el script en un panel inferior.
SciTE - Semejante a gedit y menos personalizable. PyGame incluye SciTE.
Editra - Incluido con Stani's. Creo que el editor de Stani's extiende Editra.
IDLE - Autocompletar, resaltado de sintaxis, depuración y una de las interfaces más incómodas que he visto (no tan mala como vim, emacs o foxpro).
PyPE - Instalé el programa y nunca funcionó.
Eric - Interfaz sobrecargada, autocompletar se basa sólo en lo que has escrito en el módulo actual. Por lo demás, Eric funciona bien.
Boa Constructor - Buena funcionalidad pero la intefaz es incómoda (tres ventanas sueltas, puedes hacer que arranque con sólo una si editas su archivo de configuración y activas modo "Constricted"). Como sea, es difícil escoger entre Eric y Boa Constructor.
Eclipse - Proyectos como l2jfree recomiendan Eclipse (porque usan java y python). Lamentablemente tuve problemas instalando JPyDebug (el plugin para python, sin el no pasa nada en python).
jEdit - Resalte de sintaxis recién instalado, más funcionalidad con JPyDebug... Ctrl+Espacio repite la última acción así que no tengo idea de dónde está el autocompletar (y si existe).
Pydev - (Revisar el post de fire-eater más abajo)
Netbeans (leer más abajo) - Netbeans es uno de los mejores IDEs, pero podría ser hasta más pesado que Visual Studio. No tiene soporte para python, el plugin JPyDbg debería ofrecer la misma funcionalidad que las versiones para JEdit y Eclipse, pero su configuración fue tan complicada que me atrevería a decir que No funciona para Netbeans 6.1. Por esa razón hice un plugin para python que no es ni la sombra de JPyDbg pero funciona para mí (no tiene autocompletar, ni depurador y el resaltado de sintaxis tiene algunas fallas pero gracias a ant puede manejar un grupo de scripts como si fueran un proyecto).

Cambiando los colores a Stani's Python Editor


La versión disponible en ubuntu (para Julio del 2008) no carga los colores que se colocan en el archivo de configuración. Yo uso ubuntu studio con un tema oscuro, lo que es una grandísima joda para la mayor parte de programas: Todos asumen que el fondo es blanco (Incluido Netbeans :S).
Ya que Stani's está escrito en python, basta editar algunos archivos y reemplazar algunos colores.

Esto es para hacer que Stani's tenga un color de fondo oscuro y se vea como muestra esta imagen

Nota: Incluyo esto para referencia personal. Antes de probar lo que sigue, intenta editar ~/.spe/defaults.cfg.
Los cambios que hice a los archivos son los siguientes:

/usr/share/spe/_spe/Child.py @ Linea 180 (aprox):

        #explore
        explore     = self.explore = TreeCtrl(parent=self.notebook,style=STYLE_TREE)#wx.TreeCtrl

        #explore.SetBackgroundColour(wx.WHITE) #comentar esta linea
        self.root   = self.explore.AddRoot('Right click to locate')
        #explore.SetPyData(self.root,0)
        explore.SetImageList(self.parentPanel.iconsList)
##        explore.SetItemImage(self.root,self.parentPanel.iconsListIndex['note.png'])
##        explore.SetItemImage(self.root,self.parentPanel.iconsListIndex['note.png'],wx.TreeItemIcon_SelectedExpanded)
##        explore.SetItemImage(self.root,self.parentPanel.iconsListIndex['note.png'],wx.TreeItemIcon_Expanded)
##        explore.SetItemImage(self.root,self.parentPanel.iconsListIndex['note.png'],wx.TreeItemIcon_Selected)

/usr/share/spe/_spe/sm/stc.py @ Linea 170 (aprox):

        self.StyleSetSpec(wx_stc.STC_STYLE_DEFAULT,
                          "face:%(mono)s,size:%(size)d" % \
                          self.faces)
        self.StyleSetBackground(wx_stc.STC_STYLE_BRACELIGHT,"#AAAAFF")

        # antes BLACK and DARK TURQUIOSE
        self.SetCaretForeground("WHITE")
        self.SetSelBackground(1,'#355077')

        #EVENTS

/usr/share/spe/_spe/sm/stc.py (otra vez) @ Linea 450 (aprox) :

        if 1:#dialogs.stcStyleEditor.SetStyles(self, self.config):
            self.StyleSetSpec(wx_stc.STC_P_DEFAULT, "face:%(mono)s,size:%(size)d" % self.faces)
            self.StyleClearAll()

            # Global default styles for all languages
            self.StyleSetSpec(wx_stc.STC_STYLE_DEFAULT,     "back:#333333,fore:#CCCCCC,face:%(mono)s,size:%(size)d" % self.faces)
            self.StyleSetSpec(wx_stc.STC_STYLE_LINENUMBER,  "back:#444444,face:%(mono)s,size:%(size)d" % self.faces)
            self.StyleSetSpec(wx_stc.STC_STYLE_CONTROLCHAR, "face:%(mono)s" % self.faces)
            self.StyleSetSpec(wx_stc.STC_STYLE_BRACELIGHT,  "fore:#FFFFFF,back:#000088,bold")
            self.StyleSetSpec(wx_stc.STC_STYLE_BRACEBAD,    "fore:#FFFFFF,back:#880000,bold")

            # Python styles
            # White space
            self.StyleSetSpec(wx_stc.STC_P_DEFAULT, "face:%(mono)s,size:%(size)d" % self.faces)
            # Comment
            self.StyleSetSpec(wx_stc.STC_P_COMMENTLINE, "face:%(mono)s,fore:#3AA089,italic,size:%(size)d" % self.faces)
            # Number
            self.StyleSetSpec(wx_stc.STC_P_NUMBER, "face:%(mono)s,fore:#4B8FEE,size:%(size)d" % self.faces)
            # String
            self.StyleSetSpec(wx_stc.STC_P_STRING, "face:%(mono)s,fore:#FFDC00,size:%(size)d" % self.faces)
            # Single quoted string
            self.StyleSetSpec(wx_stc.STC_P_CHARACTER, "face:%(mono)s,fore:#FFDC00,size:%(size)d" % self.faces)
            # Keyword
            self.StyleSetSpec(wx_stc.STC_P_WORD, "face:%(mono)s,fore:#2580FF,bold,size:%(size)d" % self.faces)
            # Triple quotes
            self.StyleSetSpec(wx_stc.STC_P_TRIPLE, "face:%(mono)s,fore:#E4A51F,size:%(size)d" % self.faces)
            # Triple double quotes
            self.StyleSetSpec(wx_stc.STC_P_TRIPLEDOUBLE, "face:%(mono)s,fore:#E4A51F,size:%(size)d" % self.faces)
            # Class name definition
            self.StyleSetSpec(wx_stc.STC_P_CLASSNAME, "face:%(mono)s,fore:#FFFFFF,bold,size:%(size)d" % self.faces) #underline
            # Function or method name definition
            self.StyleSetSpec(wx_stc.STC_P_DEFNAME, "face:%(mono)s,fore:#EEEEEE,bold,size:%(size)d" % self.faces)
            # Operators
            self.StyleSetSpec(wx_stc.STC_P_OPERATOR, "face:%(mono)s,fore:#FFFFFF,bold,size:%(size)d" % self.faces)
            # Identifiers
            self.StyleSetSpec(wx_stc.STC_P_IDENTIFIER, "")
            # Comment-blocks
            self.StyleSetSpec(wx_stc.STC_P_COMMENTBLOCK, "face:%(mono)s,fore:#3AA089,size:%(size)d" % self.faces) #italic
            # End of line where string is not closed
            self.StyleSetSpec(wx_stc.STC_P_STRINGEOL, "face:%(mono)s,fore:#000000,face:%(mono)s,back:#E0C0E0,eol,size:%(size)d" % self.faces)

    #---get
    def getWord(self,whole=None):

/usr/share/spe/_spe/sm/uml.py @ Linea 337 (aprox) :

        #generate contents
        total                   = float(len(container))+1
        current                 = 0
        text                    = ''
        # quitar el texto rojo 
        self.AddText(name,prop=1/total, textColour=wx.BLACK,format=ogl.FORMAT_CENTRE_HORIZ)
        for entry in container:
            if entry[0] == SEPARATOR:
                self.AddText(text,prop=current/total)
                self.AddText(entry[1:],prop=1/total, textColour=wx.Colour(0,0,200),format=ogl.FORMAT_CENTRE_HORIZ)

/usr/share/spe/_spe/sm/uml.py @ Linea 391 (aprox) :

        PrintCanvas.__init__(self, parent,**keyw)

        self.parent = parent
        self.SetBackgroundColour( (45,45,45) )
        self.diagram = ogl.Diagram()
        self.SetDiagram(self.diagram)

Supongo que dentro de poco el editor Stani's ya tendrá esto arreglado y este parche no será necesario.
Como se puede ver en la imagen, la consola sigue teniendo fondo blanco y algunos colores necesitan arreglarse. Al menos SPE ya no se verá como el único bicho raro con fondo blanco en mi pantalla y podré seguir trabajando con la luz apagada.

Comentarios

Imagen de Cristobal López

Hola, puedes probar con Geany si quieres

Imagen de th3pr0ph3t

Cierto, también probé Geany, tenía buen aspecto y era fácil de usar. Olvidé incluirlo en la lista, lo que estaba buscando es autocompletar y Geany no brilló por eso.

100% Ubuntu! :D

Imagen de Saulot

Interesante lista. Yo he estado trabajando con Eclipse y Pydev, va muy bien hasta ahora. Lo único malo es que para cargarlo es un poco pesado y lento, pero una vez funcionando anda bien.

Ahorita ando experimentando con Boo (una modificación de Python) y Mono, usando Monodevelop como IDE. Si no fuera por el intendo de implementar .Net sería una interesante opción.

Suerte!!

Imagen de gotxa

Hola,
gracias por la entrada.
Ahora bien, comentas que SciTE no se deja configurar mucho y eso no es así, más bien todo lo contrario aunque se hace de una forma un poco especial (vía ficheros de directivas y no vía diálogo de opciones).

GoTXa
linux counter #116453
Si cree que la capacitación es cara, pruebe con la ignorancia.

GoTXa
linux counter #116453
Klaatu barada nikto

Imagen de th3pr0ph3t

Es cierto. Me apresuré con el comentario de SciTE. Lo que no me gustó es que siempre arrancaba con una fuente de ancho variable y no de ancho fijo, tenía que presionar una combinación de teclas y no creo cual es.

Gracias a todos por opinar (y sigan opinando). Lo que escribo en esta bitácora es mi opinión personal.

Realmente lo que necesita python es un buen IDE. Si tan solo Eclipse me hubiera funcionado con PyDev...

100% Ubuntu! :D

Imagen de cousteau

Ctrl+F11. Lo que no sé es cómo configurar las opciones (lenguaje de programación, ancho fijo/variable, CR/LF/CRLF, codificación de caracteres...) para que aparezcan por defecto. Si se guardasen las opciones elegidas para la próxima sesión de SciTE sería bastante más cómodo.


«E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem» significa que dpkg se ha interrumpido y que tienes que ejecutar "sudo dpkg --configure -a" para corregir el problema.

«E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem» significa que dpkg se ha interrumpido y que tienes que ejecutar "sudo dpkg --configure -a" para corregir el problema.
Imagen de fire-eater

En primer lugar muy buena la lista que se ha publicado aquí aunque debo resaltar que si lo que se busca es un buen debugger y completamiento de código
Pydev tiene muy buenas prestaciones, tengo muy buena opinion del boa y discrepo en criticar un software solo como se ve sin evaluar otras características que este si tiene, mezcla de trabajo es Pydev + Boa Constructor

al final saque usted sus propias conclusiones

Un saludo desde CUBA

Quien se levanta hoy por Cuba se levanta para todos los tiempos

Viva el software libre, Long Live free software, Ubuntu and so on !!!

Un saludo desde CUBA

Quien se levanta hoy por Cuba se levanta para todos los tiempos

Viva el software libre, Long Live free software, Ubuntu and so on !!!

Imagen de th3pr0ph3t

Resulta que estaba equivocado con Netbeans. El soporte para Python en Netbeans lleva más de un año en desarrollo. Está disponible una versión Early Access en http://download.netbeans.org/netbeans/6.5/python/ea/

Esa descarga incluye una versión de Netbeans sólo con Python que funciona de p.m. Gracias a esto, Netbeans tiene casi todo lo que esperaba de un IDE para Python. Todavía no es una versión completa pero hasta donde la veo no tiene problemas.

Netbeans IDE for Python, incluye resalte de sintaxis, autocompletar con documentación, navegador de código (para ir a una función o clase con un doble clic), algunos consejos (hints), y un depurador. Puede renombrar una variable, encontrar líneas donde se usa algo, puede reparar importaciones (agregar o quitar imports según sea necesario) y muchas de las bondades que Netbeans ya ofrecía para Java.

Estoy muy contento de ver que Netbeans dará soporte a Python. Lo que realmente necesita Python es un buen IDE, y algo de popularidad, por supuesto.

100% Ubuntu! :D

100% Ubuntu! :D