Spyder: Las variables no aparecen en el explorador de variables (Python 3.6)

Creado en 16 feb. 2017  ·  46Comentarios  ·  Fuente: spyder-ide/spyder

Descripción

¿Qué pasos reproducirán el problema?

  1. Abrir Spyder
  2. Escribe un código con variables (incluso una constante)
  3. Ejecute el código y las variables no aparecen, ni siquiera la constante 'épsilon'

cual es la salida esperada?
Espero ver algunos resultados en el explorador de variables. Esto sucede tanto en Spyder 3.1.2 Linux como en Windows.

Proporcione cualquier información adicional a continuación
Aquí está mi código, intentando implementar elmimination gaussiano:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Feb 16 17:40:09 2017

<strong i="18">@author</strong>: 
"""

import numpy as np


def f(x):
    return 100*np.exp(-10*x)

def exact(x):
    return 1.0-(1-np.exp(-10))*x-np.exp(-10*x)

# Hardcoded params for simplicity
#fileout = pyOutput
exponent = 4
#n = 4

for k in range(1, exponent):
    # Weird thing we didn't understand
    n = 10**k

    # Append i to filename
    fileout = 'pyOutputSimple'
    fileout += str(k)

    # descretization resolution
    h = 1/n
    hh = h*h

    ''''''

    d = np.zeros(n+1)
    b = np.zeros(n+1)
    x = np.zeros(n+1)
    solution = np.zeros(n+1)

    d[0] = 2
    d[n] = 2
    solution[0] = 0
    solution[n] = 0
    for i in range(1,n):
        d[i] = (i+1)/i
    for i in range(0,n+1):
        x[i] = i*h
        b[i] = hh*f(i*h)

    # FW sub
    for i in range(2,n):
        b[i] = b[i] + b[i-1]/d[i-1]
    # Backward sub
    solution[n-1] = b[n-1]/d[n-1]    
    for i in range((n-2),0):
        solution[i] = (b[i]+solution[i+1])/d[i]

    with open(fileout, 'w') as fout:
        fout.write('x:\t\tApprox:\t\tExact:\t\tRelative Error:\n')
        for j in range(0,n):
            RelativeError = np.abs((exact(x[j])-solution[j])/exact(x[j]))
            fout.writelines('{0:.8f}'.format(x[j]) + '\t')
            fout.writelines('{0:.8f}'.format(solution[j]) + '\t')
            fout.writelines('{0:.8f}'.format(exact(x[j])) + '\t')
            fout.writelines('{0:.8f}'.format(np.log10(RelativeError)) + '\n')
    fout.closed
    print('File: ' + str(k) + '/' + str(exponent) + ' written.')

Versión y componentes principales

  • Versión de Spyder: 3.1.2
  • Versión de Python: 3.6.0
  • Versiones Qt: 5.6.2, PyQt5 5.6 en Linux

Dependencias

numpy se usa

pyflakes >=0.6.0 :  1.5.0 (OK)
pep8 >=0.6       :  1.7.0 (OK)
pygments >=2.0   :  2.1.3 (OK)
qtconsole >=4.2.0:  4.2.1 (OK)
nbconvert >=4.0  :  4.2.0 (OK)
pandas >=0.13.1  :  0.19.2 (OK)
numpy >=1.7      :  1.11.3 (OK)
sphinx >=0.6.6   :  1.5.1 (OK)
rope >=0.9.4     :  0.9.4-1 (OK)
jedi >=0.8.1     :  0.9.0 (OK)
psutil >=0.3     :  5.0.1 (OK)
matplotlib >=1.0 :  2.0.0 (OK)
sympy >=0.7.3    :  1.0 (OK)
pylint >=0.25    :  1.6.4 (OK)

Variable Explorer Duplicate Bug

Comentario más útil

Hay una opción en el Explorador de variables llamada Exclude unsupported types que, si se desmarca, mostrará todos los tipos de variables.

Todos 46 comentarios

¿Ocurre solo en Python 3.6?

Por lo que puedo decir, sí. No tuve estos problemas con Python 3.5 y Spyder 2.3.8 en mi otra máquina con Windows 7.

Actualice a Spyder 3.1.3 y vuelva a intentarlo. Nuestras pruebas se están ejecutando bien en Python 3.6 y detectan si los objetos se muestran en el Explorador de variables.

Creo que también estoy experimentando este problema y estoy ejecutando 3.1.3 en Ubuntu. Informes ipdb ...

ipdb> sys.version_info
sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0)

Pude ver la función del Explorador de variables en este archivo simple ...

substitutions = dict(planet="World")
print("Hello {planet}".format(**substitutions))

... y visualizó correctamente el substitutions dict

Sin embargo, cuando se ejecuta de forma interactiva contra este archivo ...
https://github.com/cefn/avatap/blob/6ad61cb3b8e198acae1caa6f187726fea4834b30/python/test.py
... no se muestra nada en la ventana del Explorador de variables, incluso desde la primera línea de la primera importación local.

Sin embargo, el panel ipdb interactivo es capaz de inspeccionar variables cuando se ejecuta ese archivo, por ejemplo, en un punto de interrupción de Spyder en la línea 28 en test.py, puedo hacer ...

ipdb> !locals().keys()
dict_keys(['BoxPassage', '___', 'Engine', 'ticks_ms', 'loadStory', '_oh', '_iii', 'ChoicePassage', '_ih', 'storyUid', '__package__', 'ConfirmationPassage', '_sh', '_', 'uidInitTypes', '__name__', 'UidRegistry', '__file__', '_i1', 'boxUids', 'getStoryContext', 'Card', 'UidItem', '_ii', 'In', '__builtins__', '_i2', '_dh', 'Container', 'Uid', '_i', '__', 'ConditionalPassage', '__spec__', 'passageUids', 'Box', '__doc__', '__builtin__', 'Story', 'Out', 'AnonymousContainer', 'PagePassage', 'exit', 'story', 'Item', '__loader__', '_i3', 'MockEngine', 'Passage', 'unittest', 'quit', 'get_ipython'])

... mientras que no se muestra nada en el Explorador de variables.

Me aseguré de eliminar todos los paquetes de ubuntu spyder y spyder3 a través de apt-get purge , luego los instalé a través de pip como ...

sudo -H pip3 install --update spyder

Para estar doblemente seguro de que no pasaba nada extraño, luego corrí ...

pip3 freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 sudo -H pip3 install --upgrade

... para actualizar todos los paquetes pip3 a la última versión, pero aún así, el Explorador de variables de Spyder no coopera.

Bien, si este problema se trata de la depuración, entonces es un error y se informó en el número 3711.

Se solucionará en Spyder 3.2.

Vaya, creo que al mirar con más detalle, quizás el OP no estaba ejecutando el código a través del depurador como había asumido, por lo que es posible que haya secuestrado este error por error. No me había dado cuenta de que había un visor de variables que indicaba el estado de los símbolos de 'módulo' al final de una ejecución, así que asumí que el comportamiento descrito estaba vinculado a la depuración. Culpa mía. Quizás el OP pueda aclarar.

@ ccordoba12 ¿hay una solicitud de extracción en la que pueda contribuir a probar esta función con la solución esperada para aterrizar en spyder 3.2? Intenté fusionar su rama debugger-improvements en spyder: head según https://github.com/cefn/spyder/pull/1 pero esto no cambia el comportamiento del Explorador de variables en el escenario de depuración descrito ( aunque el IDE parece estable y funcional).

¿Quizás es un elemento de la lista de deseos 3.2 para resolverlo y el código para resolverlo aún no se ha escrito? Avíseme si hay algo en lo que las pruebas en vivo sean útiles.

Hay una opción en el Explorador de variables llamada Exclude unsupported types que, si se desmarca, mostrará todos los tipos de variables.

@cefn, este problema estaba ocurriendo cuando no estaba en el depurador. Las variables deben actualizarse al final, pero no lo son si es que aparecen. El depurador parece funcionar la mayor parte del tiempo. Puedo hacer que aparezcan si ejecuto el depurador, pero luego no se actualizan con ejecuciones posteriores. Estos son tipos compatibles, como los tipos nativos de Python (cadena, int, lista, etc.). Gracias por mirar en esto

Solo quería volver a intervenir y decir que las variables ahora se muestran bien en Spyder 3.1.3 en Linux cuando se usa la siguiente configuración en un archivo yml de entorno virtual conda:

https://github.com/sayboltm/tmp/blob/master/spyder_working.yml

Tengo el presentimiento de que la versión de QT que estaba ejecutando antes puede estar relacionada con el problema. He tenido muchos problemas con QT para Python con otros proyectos que solo resolví recientemente.

Editar: enlace de github en lugar de pegar el archivo yml completo

No importa. Por supuesto, después de muchas pruebas, tan pronto como publique eso, no mostrará las variables después de una ejecución en el explorador de variables. Bueno, ahí está mi configuración. Espero que puedan arreglar eso porque esa es mi característica favorita y la razón por la que uso Spyder.

image

Tuve el mismo problema tan pronto como actualicé de spyder 3.1.3 a spyder 3.1.4. Tenga en cuenta que en Tools / Preferences / Variable Explorer / Autorefresh hay una casilla de verificación que es posible que deba marcarse (la mía estaba desactivada después de la actualización)

Examiné esa casilla y estaba desmarcada, pero para mi consternación, al marcarla, reiniciar Spyder aún no solucionó este problema aparentemente intermitente. Esto es bastante desconcertante.

¿Se ha solucionado esto? Ejecuto mi código con éxito pero no puedo ver ninguna de las variables en el explorador de variables después. ¿Por qué es esto? Spyder 3.2.0 con Python 3.5.3.

enfrentando el mismo problema aquí, estoy arruinando la versión de Spyder: 3.1.4
¡¡No puedo ver los tipos de datos !!
y soy nuevo aqui !!
ayúdame a solucionarlo. :)
capture

Gracias @vishalnadagiri. Actualmente, las matrices de objetos (con dtype=object , es decir, con datos no numéricos) no son compatibles. Ya existe un PR (# 5260) en curso para agregar esta funcionalidad. Estará disponible en una versión futura.

Mientras tanto:

  • puede ver sus datos X si los mantiene como DataFrame (simplemente elimine .values en su línea 10)
  • o puede verlo como array si elimina los datos no numéricos (la primera columna en su caso)

Gracias @Prikers por la ayuda, solo pude ver el DataFrame eliminando .values y funcionó bien y puedo ver el DataFrame.

Todavía he visto que este problema ocurre y, como resultado, ejecuto Spyder 2.3.8 cuando realmente necesito contar con él para actualizarlo y funcionar correctamente. El problema es que eso requiere un antiguo matplotlib que limita con qué más puedo trabajar.

Solo por el bien de este hilo, comencé a probar Spyder 3.2.3 (el último compatible con conda a partir de ahora) y creo que el explorador de variables parece estar funcionando. pero juro que probé en Linux y Windows con versiones más nuevas y solo a veces funciona.

La peor parte es cuando funciona al principio, se llena con variables (por lo que cree que está funcionando), luego deja de funcionar para que los datos antiguos permanezcan allí y se pregunte por qué sus variables no se asignan correctamente, etc. pero en realidad es el explorador de variables moribundo. Cuando esto sucede, verifico escribiendo un tipo admitido conocido (int, string) en la consola iPython y veo que no se agrega al explorador de variables. Me alegra ver algo de actividad aquí, volveré a comprobarlo porque me encanta el explorador de variables. ¡La característica favorita de Spyder seguro!

@Prikers ¡ Esperamos con ansias esto! ¡Me encanta poder alejar a las personas de Matlab y llevarlas a Python y al código abierto usando Spyder como puerta de enlace!

@sayboltm, si puedes tener un ejemplo simple reproducible, ¡estaré dispuesto a investigar!

Tengo un problema similar con Spyder 3.1.2 y Python 3.6. Veo mis variables enumeradas en el Explorador de variables. Pero si hago doble clic en la matriz o variable de matriz, no puedo ver la matriz completa o la matriz completa como solía hacerlo con la versión 2. * de Sypder. ¿Alguien puede arrojarme algunas luces sobre cómo solucionar esto, por favor? ¡Muchas gracias de antemano!

El mensaje de error que recibí: 'Spyder no pudo recuperar el valor de esta variable de la consola', con un mensaje de error adicional de 'Inspeccionar y configurar valores mientras se depura en consolas IPython aún no es compatible con Spyder'. Sin embargo, estoy bastante seguro de que pude ver el contenido de todo el marco de datos en la versión 2. * de Spyder.

@JasperAustin, ¿está tratando de ver las variables mientras ejecuta el depurador?
¿Su problema es similar a este ?

Sí, @Prikers , estoy tratando de ver las matrices en el depurador

Su problema se solucionó en Spyder 3.2. Por favor actualice.

El 03/10/17 a las 15:34, JasperAustin escribió:
>

Sí, @Prikers https://github.com/prikers , estoy tratando de ver el
matrices en el depurador

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/spyder-ide/spyder/issues/4154#issuecomment-333970000 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAWS7SsFdQRCZ039T-4G8PguiNdDVwpsks5sopppgaJpZM4MDpNC .

Gracias, @ ccordoba12. Soy nuevo en Python. ¿Cómo puedo actualizar a Spyder 3.2 desde 3.1.2?

Si está utilizando Anaconda, debe ejecutarlo en una terminal del sistema (cmd.exe, Terminal.app o xterm)

conda update spyder

Si no es así, ejecute

pip install -U spyder

Gracias de nuevo @ ccordoba12 . Utilizo Anaconda y probé su primer comando dos veces, pero todavía recibí el siguiente error:
C: \ Users \ U608025> conda update spyder
Obteniendo metadatos del paquete ...

CondaHTTPError: HTTP Ninguno Ninguno para la URL
Transcurrido: Ninguno

Se produjo un error HTTP al intentar recuperar esta URL.
ConnectTimeout (MaxRetryError ("HTTPSConnectionPool (host = 'repo.continuum.io', puerto
= 443): se superó el máximo de reintentos con la URL: /pkgs/free/win-64/repodata.json.bz2 (
d por ConnectTimeoutError ( objeto de acción en 0x0000000006D19A90>, 'Se agotó el tiempo de espera de la conexión a repo.continuum.io
. (tiempo de espera de conexión = 9.15) ')) ",),)

he corrido

instalación de pip -U spyder

Pero eso instaló Spyder 3.1.2, no 3.2. (En Ubuntu 16.04 LTS)

Hola a todos !

Tengo un pequeño problema con mi spyder. ¡Primero me disculpo por escribir mi problema aquí! Eso no es tan importante, pero me gustaría que alguien pudiera ayudarme ^^
En realidad, cuando abro Spyder tengo muchas variables en el explorador como ScalarType, cast ect ...
¿Existe una forma sencilla de evitar que aparezcan estas variables?

Muchas gracias !

@ldesmet en la esquina superior derecha del complemento del explorador de variables hay un menú de engranajes. Allí, hay opciones para ocultar algunas variables como:

  • Referencias privadas (nombres de variables que comienzan con _ )
  • Todas las referencias en mayúsculas
  • Tipos de datos no admitidos

¿Estas opciones se ajustan a sus necesidades?

Hola ! Gracias por su respuesta :)

Desafortunadamente, ya he marcado estas casillas. Todavía tengo estas variables en el explorador de variables cuando abro Spyder (una vez más, no es un gran problema, simplemente las elimino manualmente pero me gustaría dejar de hacer esto ^^)

Gracias de nuevo !

Tan pronto como abra Spyder (antes de ejecutar cualquier script), estas variables completan el explorador de variables.

Sí exactamente ! Puedo unirme a una foto si quieres.

@ldesmet Parece que la consola de IPython ejecuta algún código tan pronto como lo abres, posiblemente importando numpy. ¿Puedes abrir tus Preferencias en Spyder (en el menú Tools ), hacer clic en IPython console y en la pestaña Graphics y ver si Automatically import Pylab and Numpy modules está marcado? Si es así, probablemente esa sea la causa. De lo contrario, otras cosas para verificar son la pestaña Startup y Use symbolic maths debajo de Advanced Settings .

Si nada de esto ayuda, una imagen sería útil.

Hola, gracias por tu respuesta !

Acabo de desmarcar la casilla "Importar automáticamente módulos de Pylab y Numpy" ¡y ahora ya no veo estas variables! ¡Eso funciona perfectamente!

Gracias a los dos @Prikers y @jitseniesen :)

Hola, soy nuevo en python y spyder y tengo spyder 3.2.4 con Python 3.5 instalado. Tengo un código de tensorflow que funciona bien. Sin embargo, tengo problemas con la depuración ya que no muestra ningún valor de variable asociado con tensorflow en la consola. Vea un ejemplo de 'predecir' a continuación después de ejecutar el código en modo de depuración. 'predecir es la salida de una función de flujo tensorial.

ipdb> yo
9
ipdb> predecir

Estoy importando lo siguiente;
importar numpy como np
importar tensorflow como tf
tiempo de importación
importar data_helpers

¿Existe una solución alternativa para mostrar los valores de la variable tensorflow en la consola, ya que eso es importante para la depuración?

¡Gracias!

¡Saludos!

Tengo un problema similar en el explorador de variables. Estoy usando Spyder 3.5. Por favor, avíseme si estoy haciendo algo mal aquí.

Cuando escribo el siguiente código, puedo ver welcome_str listado como en el explorador de variables

welcome_str='hello'
print(welcome_str)

Ahora, si escribe el mismo código usando __name __ == "__ main__", el explorador de variables está vacío

#Main function
def main():

    #define constants here
    welcome_str='hello'

    #program flow
    print(welcome_str)

#Main function call
if __name__=="__main__":
    main()

Experimenté el mismo error en mi intento de implementar el siguiente código al comienzo del script como alternativa al uso manual de% reset en la consola de IPython para borrar el explorador de variables

desde IPython import get_ipython
get_ipython (). magic ('restablecer -sf')

debutado cuando se importaron algunos datos de la GUI manualmente

También estaba teniendo este problema. Lo rastreé hasta el uso de un script de inicio de IPython. Estaba haciendo una limpieza de variables al final y del get_ipython aparentemente estaba arruinando la conexión con el Explorador de variables. Mantener get_ipython en el alcance parece hacer que funcione correctamente.

get_ipython aparentemente estaba arruinando la conexión con el Explorador de variables. Mantener get_ipython en el alcance parece hacer que funcione correctamente.

Sí, get_ipython es muy importante, no solo para Spyder sino también para IPython. Así que no lo elimines.

capture
los textos no se muestran en la columna de valores de clean_answer, cómo resolver esto

@jagadishkt , abra un nuevo número sobre su problema en lugar de publicar en los antiguos y cerrados. Además, publique un código simple que podamos usar para reproducir su error.

@ ccordoba12 gracias. Eso ayudo

Tengo el mismo problema con Spyder 3.1.2 y Python 3.6. Las funciones no se ejecutan correctamente; las veo ejecutándose, pero no se devuelve nada. Este también es el caso de las funciones de prueba ficticia (como a + b return c).

Estaba teniendo el mismo problema con spyder 3.3.6. Desinstalé numpy, spyder y reinstalé ambos, luego el problema se resolvió.

¿Fue útil esta página
0 / 5 - 0 calificaciones