Spyder: Les variables n'apparaissent pas dans l'explorateur de variables (Python 3.6)

Créé le 16 févr. 2017  ·  46Commentaires  ·  Source: spyder-ide/spyder

La description

Quelles étapes vont reproduire le problème?

  1. Ouvrez Spyder
  2. Écrire du code avec des variables (même une constante)
  3. Exécutez le code et les variables n'apparaissent pas, pas même la constante 'epsilon'

Quelle est l'attente de production?
Je m'attends à voir une sortie dans l'explorateur de variables. Cela se produit à la fois sur Spyder 3.1.2 Linux et Windows.

Veuillez fournir toute information supplémentaire ci-dessous
Voici mon code, essayant d'implémenter l'élimination gaussienne:

#!/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.')

Version et principaux composants

  • Version de Spyder: 3.1.2
  • Version Python: 3.6.0
  • Versions Qt: 5.6.2, PyQt5 5.6 sous Linux

Dépendances

numpy est utilisé

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

Commentaire le plus utile

Il existe une option dans l'explorateur de variables appelée Exclude unsupported types qui, si elle n'est pas cochée, affichera tous les types de variables dessus.

Tous les 46 commentaires

Cela se produit-il uniquement dans Python 3.6?

Autant que je sache, oui. Je n'avais pas ces problèmes avec Python 3.5 et Spyder 2.3.8 sur mon autre ordinateur Windows 7.

Veuillez mettre à jour vers Spyder 3.1.3 et réessayer. Nos tests fonctionnent très bien dans Python 3.6 et détectent si des objets sont affichés dans l'explorateur de variables.

Je crois que je rencontre également ce problème et j'utilise la version 3.1.3 sur Ubuntu. Rapports Ipdb ...

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

J'ai pu voir la fonction de l'explorateur de variables par rapport à ce simple fichier ...

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

... et il a correctement visualisé le substitutions dict

Cependant, lors de l'exécution interactive sur ce fichier ...
https://github.com/cefn/avatap/blob/6ad61cb3b8e198acae1caa6f187726fea4834b30/python/test.py
... rien n'est affiché dans la fenêtre Explorateur de variables, même à partir de la toute première ligne de la première importation locale.

Cependant, le volet ipdb interactif est en effet capable d'inspecter les variables lors de l'exécution de ce fichier, par exemple, à un point d'arrêt Spyder sur la ligne 28 dans test.py, je peux faire ...

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'])

... alors que rien du tout n'est affiché dans l'explorateur de variables.

Je me suis assuré de supprimer tous les paquets ubuntu spyder et spyder3 via apt-get purge , puis installés via pip comme ...

sudo -H pip3 install --update spyder

Pour être doublement sûr qu'il ne se passait rien de bizarre, j'ai ensuite couru ...

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

... pour mettre à niveau tous les packages pip3 vers la dernière version, mais l'explorateur de variables de Spyder ne coopère toujours pas.

Ok, si ce problème concerne le débogage, alors c'est un bogue et il a été signalé dans le numéro 3711.

Il sera corrigé dans Spyder 3.2.

Oups, je pense qu'en regardant plus en détail, peut-être que l'OP n'exécutait pas le code via le débogueur comme je l'avais supposé, donc j'ai peut-être détourné par erreur ce bogue. Je n'avais pas réalisé qu'il y avait un visualiseur de variables indiquant l'état des symboles de «module» à la fin d'une exécution, donc j'ai juste supposé que le comportement décrit était lié au débogage. Ma faute. Peut-être que le PO peut clarifier.

@ ccordoba12 y a-t-il une pull request où je peux contribuer à tester cette fonctionnalité par rapport au correctif attendu pour atterrir dans spyder 3.2? J'ai essayé de fusionner votre branche debugger-improvements dans spyder: head selon https://github.com/cefn/spyder/pull/1 mais cela ne change pas le comportement de l'Explorateur de variables dans le scénario de débogage décrit ( bien que l'EDI semble stable et autrement fonctionnel).

C'est peut-être un élément de la liste de souhaits 3.2 pour le résoudre et le code pour le résoudre n'a pas encore été écrit? Faites-moi savoir s'il y a quelque chose où les tests en direct sont utiles.

Il existe une option dans l'explorateur de variables appelée Exclude unsupported types qui, si elle n'est pas cochée, affichera tous les types de variables dessus.

Oui @cefn, ce problème se produisait lorsqu'il n'était pas dans le débogueur. Les variables devraient être mises à jour à la fin, mais elles ne le sont pas si elles apparaissent même du tout. Le débogueur semble fonctionner la plupart du temps. Je peux les faire apparaître si j'exécute le débogueur, mais après ils ne se mettent pas à jour avec les exécutions suivantes. Ce sont des types pris en charge comme les types Python natifs (string, int, list, etc.). Merci d'avoir examiné cela

Je voulais juste revenir en arrière et dire que les variables s'affichent désormais correctement dans Spyder 3.1.3 sous Linux lors de l'utilisation de la configuration suivante dans un fichier yml d'environnement virtuel conda:

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

J'ai l'impression que la version de QT que j'utilisais auparavant peut être liée au problème. J'ai eu beaucoup de problèmes avec QT pour python avec d'autres projets que je n'ai résolus que récemment.

Edit: lien github au lieu de coller le fichier yml entier

Ça ne fait rien. Bien sûr, après de nombreux tests, dès que je poste cela, il ne montrera pas les variables après une exécution dans l'explorateur de variables. Eh bien, voici ma configuration. J'espère que vous pourrez résoudre ce problème, car c'est sans conteste ma fonctionnalité préférée et la raison pour laquelle j'utilise Spyder.

image

J'ai eu le même problème dès que je suis passé de spyder 3.1.3 à spyder 3.1.4. Notez que sous Outils / Préférences / Explorateur de variables / Actualisation automatique, il y a une case à cocher qui pourrait devoir être cochée (la mienne était désactivée après la mise à niveau)

J'ai examiné cette boîte et elle n'a pas été cochée, mais à ma grande consternation, la vérification, le redémarrage de spyder ne résolvaient toujours pas ce problème apparemment intermittent. C'est assez déroutant.

Cela a-t-il été corrigé? J'exécute mon code avec succès mais je ne parviens plus à afficher aucune des variables de l'explorateur de variables. Pourquoi est-ce? Spyder 3.2.0 avec Python 3.5.3.

face au même problème ici, je ruine Spyder Version: 3.1.4
Impossible d'afficher les types de données !!
et je suis nouveau ici !!
aidez-moi à le résoudre. :)
capture

Merci @vishalnadagiri. Actuellement, les tableaux d'objets (avec dtype=object , c'est-à-dire avec des données non numériques) ne sont pas pris en charge. Il existe déjà un PR en cours (# 5260) pour ajouter cette fonctionnalité. Il sera disponible dans une prochaine version.

Pendant ce temps:

  • vous pouvez afficher vos données X si vous les conservez sous forme de DataFrame (supprimez simplement .values dans votre ligne 10)
  • ou vous pouvez l'afficher sous forme de array si vous supprimez les données non numériques (la première colonne dans votre cas)

Merci @Prikers pour l'aide, je viens de voir le DataFrame en supprimant .values et cela a bien fonctionné et peut voir le DataFrame !!

J'ai encore vu ce problème se produire et, par conséquent, j'exécute Spyder 2.3.8 lorsque j'ai vraiment besoin de compter dessus pour mettre à jour et fonctionner correctement. Le problème est que cela nécessite l'ancien matplotlib qui limite ce avec quoi je peux travailler.

Juste pour le plaisir de ce fil, j'ai commencé à tester Spyder 3.2.3 (le dernier supporté par conda à partir de maintenant) et allez comprendre que l'explorateur de variables semble fonctionner. mais je jure que j'ai essayé sous Linux et Windows avec des versions plus récentes et cela ne fonctionne que parfois.

Le pire, c'est quand il fonctionne au début, remplit de variables (vous pensez donc que cela fonctionne), puis arrête de fonctionner pour que les anciennes données restent là et vous vous demandez pourquoi vos variables ne sont pas affectées correctement, etc. mais c'est en fait l'explorateur de variables. mourant. Lorsque cela se produit, je vérifie en tapant un type pris en charge connu (int, string) dans la console iPython et vois qu'il n'est pas ajouté dans l'explorateur de variables. Heureux de voir une activité ici, je reviendrai car j'adore l'explorateur de variables. Fonctionnalité préférée de spyder à coup sûr!

@Prikers Dans l' attente de ça! J'adore pouvoir éloigner les gens de Matlab et passer à Python et open-source en utilisant Spyder comme passerelle!

@sayboltm si vous pouvez avoir un exemple simple reproductible, je serai prêt à enquêter!

J'ai eu un problème similaire avec Spyder 3.1.2 et Python 3.6. Je vois mes variables répertoriées dans l'Explorateur de variables. Mais si je double-clique sur le tableau ou la variable de matrice, je ne peux pas voir le tableau entier ou la matrice entière comme je le faisais avec la version 2. * de Sypder. Quelqu'un peut-il m'éclairer sur la façon de contourner ce problème s'il vous plaît? Merci beaucoup d'avance!

Le message d'erreur que j'ai reçu: `` Spyder n'a pas pu récupérer la valeur de cette variable à partir de la console '', avec un message d'erreur supplémentaire `` L'inspection et la définition des valeurs lors du débogage dans les consoles IPython ne sont pas encore prises en charge par Spyder ''. Néanmoins, je suis presque sûr que je pourrais voir le contenu de l'ensemble du dataframe dans la version 2. * de Spyder.

@JasperAustin essayez-vous de voir les variables lors de l'exécution du débogueur?
Votre problème est-il similaire à celui-ci ?

Oui, @Prikers , j'essaye de voir les tableaux dans le débogueur

Votre problème a été résolu dans Spyder 3.2. Veuillez mettre à jour.

El 03/10/17 à 15:34, JasperAustin a écrit:
>

Oui, @Prikers https://github.com/prikers , j'essaye de voir le
tableaux dans le débogueur

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/spyder-ide/spyder/issues/4154#issuecomment-333970000 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AAWS7SsFdQRCZ039T-4G8PguiNdDVwpsks5sopppgaJpZM4MDpNC .

Merci, @ ccordoba12. Je suis nouveau sur Python. Comment puis-je mettre à jour vers Spyder 3.2 à partir de la version 3.1.2?

Si vous utilisez Anaconda, vous devez l'exécuter dans un terminal système (cmd.exe, Terminal.app ou xterm)

conda update spyder

Sinon, veuillez exécuter

pip install -U spyder

Merci encore @ ccordoba12 . J'utilise Anaconda et j'ai essayé votre première commande deux fois mais j'ai toujours l'erreur suivante:
C: \ Users \ U608025> espion de mise à jour conda
Récupération des métadonnées du package ...

CondaHTTPError: HTTP Aucun Aucun pour l'url
Écoulé: aucun

Une erreur HTTP s'est produite lors de la tentative de récupération de cette URL.
ConnectTimeout (MaxRetryError ("HTTPSConnectionPool (host = 'repo.continuum.io', port
= 443): Nombre maximal de tentatives dépassé avec l'url: /pkgs/free/win-64/repodata.json.bz2 (Cause
d par ConnectTimeoutError ( ection objet à 0x0000000006D19A90>, 'La connexion à repo.continuum.io a expiré
. (délai de connexion = 9.15) ')) ",),)

j'ai couru

pip install -U spyder

Mais cela a installé Spyder 3.1.2, pas 3.2. (Sur Ubuntu 16.04 LTS)

Salut tout le monde !

J'ai un petit problème avec mon spyder. Je m'excuse d'abord d'écrire mon problème ici! Ce n'est pas si important mais j'aimerais que quelqu'un puisse m'aider ^^
En fait, quand j'ouvre Spyder, j'ai beaucoup de variables dans l'explorateur telles que ScalarType, cast ect ...
Existe-t-il un moyen d'éviter que ces variables n'apparaissent?

Merci beaucoup !

@ldesmet dans le coin supérieur droit du plugin de l'explorateur de variables, il y a un menu d'engrenage. Ici, il existe des options pour masquer certaines variables telles que:

  • Références privées (noms de variables commençant par _ )
  • Toutes les références majuscules
  • Types de données non pris en charge

Ces options répondent-elles à vos besoins?

Salut ! Merci pour votre réponse :)

Malheureusement, j'ai déjà coché ces cases. J'ai toujours ces variables dans l'explorateur de variables lorsque j'ouvre Spyder (encore une fois, ce n'est pas grave, je les supprime simplement manuellement mais j'aimerais arrêter de faire ça ^^)

Merci encore !

Dès que vous ouvrez spyder (avant d'exécuter un script), ces variables remplissent l'explorateur de variables?

Oui, exactement ! Je peux joindre une photo si vous le souhaitez.

@ldesmet Il semble que la console IPython exécute du code dès que vous l'ouvrez, en important éventuellement numpy. Pouvez-vous ouvrir vos préférences dans Spyder (dans le menu Tools ), cliquer sur IPython console et l'onglet Graphics , et vérifier si Automatically import Pylab and Numpy modules est coché? Si tel est le cas, c'est probablement la cause. Sinon, les autres choses à vérifier sont l'onglet Startup et Use symbolic maths sous Advanced Settings .

Si rien de tout cela n'aide, une image serait utile.

Salut merci pour ta réponse!

Je viens de décocher la case "Importer automatiquement les modules Pylab et Numpy" et maintenant je ne vois plus ces variables! Cela fonctionne parfaitement!

Merci à vous deux @Prikers et @jitseniesen :)

Bonjour, je suis nouveau sur python et spyder et j'ai spyder 3.2.4 avec Python 3.5 installé. J'ai un code tensorflow qui fonctionne bien. Cependant, j'ai des problèmes avec le débogage car il n'affiche aucune valeur de variable associée à tensorflow dans la console. Veuillez voir un exemple de «prédire» ci-dessous après avoir exécuté le code en mode débogage. 'prédire est la sortie d'une fonction tensorflow.

ipdb> i
9
ipdb> prédire

J'importe ce qui suit;
importer numpy comme np
importer tensorflow en tant que tf
temps d'importation
import data_helpers

Existe-t-il une solution de contournement pour afficher les valeurs de la variable tensorflow dans la console, car c'est important pour le débogage?

Merci!

Salutations!

J'ai un problème similaire dans l'explorateur de variables. J'utilise Spyder 3.5. S'il vous plaît laissez-moi savoir si je fais quelque chose de mal ici.

Lorsque j'écris le code ci-dessous, je peux voir welcome_str répertorié comme dans l'explorateur de variables

welcome_str='hello'
print(welcome_str)

Maintenant, si vous écrivez le même code en utilisant __name __ == "__ main__", l'explorateur de variables est vide

#Main function
def main():

    #define constants here
    welcome_str='hello'

    #program flow
    print(welcome_str)

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

J'ai rencontré le même bogue lors de ma tentative d'implémentation du code suivant au début du script comme alternative à l'utilisation manuelle de% reset dans la console IPython pour effacer l'explorateur de variables

à partir de l'importation IPython get_ipython
get_ipython (). magic ('réinitialiser -sf')

débogué lors de l'importation manuelle de certaines données depuis l'interface graphique

J'avais aussi ce problème. Je l'ai retracé à l'utilisation d'un script de démarrage IPython. Je faisais un nettoyage des variables à la fin et del get_ipython ruinait apparemment la connexion à l'explorateur de variables. Garder get_ipython dans la portée semble le faire fonctionner correctement.

get_ipython ruinait apparemment la connexion à l'explorateur de variables. Garder get_ipython dans la portée semble le faire fonctionner correctement.

Oui, get_ipython est très important, non seulement pour Spyder mais pour IPython. Alors s'il vous plaît ne le supprimez pas.

capture
les textes ne s'affichent pas dans la colonne des valeurs de clean_answer, comment résoudre ce problème

@jagadishkt , veuillez ouvrir un nouveau problème à propos de votre problème au lieu de publier dans les anciens et fermés. Veuillez également publier un code simple que nous pouvons utiliser pour reproduire votre erreur.

@ ccordoba12 merci. Ça m'a aidé

J'ai le même problème avec Spyder 3.1.2 et Python 3.6. Les fonctions ne sont pas exécutées correctement - je les vois fonctionner, mais rien n'est retourné. C'est également le cas des fonctions de test factice (comme a + b return c).

J'avais le même problème avec spyder 3.3.6. J'ai désinstallé numpy, spyder et réinstallé les deux puis le problème est résolu.

Cette page vous a été utile?
0 / 5 - 0 notes