Spyder: Variáveis ​​não aparecem no explorador de variáveis ​​(Python 3.6)

Criado em 16 fev. 2017  ·  46Comentários  ·  Fonte: spyder-ide/spyder

Descrição

Quais passos vão reproduzir o problema?

  1. Open Spyder
  2. Escreva algum código com variáveis ​​(mesmo uma constante)
  3. Execute o código e as variáveis ​​não aparecem, nem mesmo a constante 'épsilon'

Qual é o resultado esperado?
Espero ver alguma saída no explorador de variáveis. Isso acontece no Spyder 3.1.2 Linux e no Windows.

Por favor, forneça quaisquer informações adicionais abaixo
Aqui está meu código, tentando implementar a eliminação Gaussiana:

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

Versão e componentes principais

  • Versão Spyder: 3.1.2
  • Versão Python: 3.6.0
  • Versões Qt: 5.6.2, PyQt5 5.6 no Linux

Dependências

numpy é usado

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

Comentários muito úteis

Há uma opção no Explorador de variáveis ​​chamada Exclude unsupported types que, se desmarcada, mostrará todos os tipos de variáveis ​​nela.

Todos 46 comentários

Isso acontece apenas no Python 3.6?

Pelo que eu posso dizer, sim. Não tive esses problemas com o Python 3.5 e o Spyder 2.3.8 em minha outra máquina com Windows 7.

Atualize para o Spyder 3.1.3 e tente novamente. Nossos testes estão funcionando perfeitamente no Python 3.6 e detectam se os objetos são exibidos no Explorador de variáveis.

Acho que também estou tendo esse problema e estou executando o 3.1.3 no Ubuntu. Relatórios ipdb ...

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

Consegui ver a função do Variable Explorer neste arquivo simples ...

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

... e visualizou corretamente o substitutions dict

No entanto, ao executar interativamente contra este arquivo ...
https://github.com/cefn/avatap/blob/6ad61cb3b8e198acae1caa6f187726fea4834b30/python/test.py
... nada é mostrado na janela do Variable Explorer, mesmo desde a primeira linha da primeira importação local.

No entanto, o painel ipdb interativo é realmente capaz de inspecionar variáveis ​​ao executar esse arquivo, por exemplo, em um ponto de interrupção do Spyder na linha 28 em test.py, eu posso fazer ...

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

... enquanto nada é mostrado no Variable Explorer.

Tive a certeza de remover todos os pacotes do ubuntu spyder e spyder3 via apt-get purge , em seguida, instalei via pip como ...

sudo -H pip3 install --update spyder

Para ter certeza absoluta de que não havia nada de estranho acontecendo, corri ...

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

... para atualizar todos os pacotes pip3 para o mais recente, mas ainda assim o Variável Explorer do Spyder não está cooperando.

Ok, se este problema for sobre depuração, então isso é um bug e foi relatado no problema # 3711.

Ele será corrigido no Spyder 3.2.

Ops, acho que olhando mais detalhadamente, talvez o OP não estivesse executando o código por meio do depurador como eu supus, então posso ter sequestrado esse bug por engano. Eu não tinha percebido que havia um visualizador de variáveis ​​indicando o estado dos símbolos de 'módulo' no final de uma execução, então presumi que o comportamento descrito estava vinculado à depuração. Foi mal. Talvez o OP possa esclarecer.

@ ccordoba12 existe uma solicitação de pull onde eu possa contribuir com testes para esse recurso em relação à correção esperada para pousar no spyder 3.2? Eu tentei mesclar seu branch debugger-improvements no spyder: siga em https://github.com/cefn/spyder/pull/1, mas isso não muda o comportamento do Variable Explorer no cenário de depuração descrito ( embora o IDE pareça estável e funcional).

Talvez seja um item da lista de desejos 3.2 para resolvê-lo e o código para resolvê-lo ainda não foi escrito? Avise-me se houver algo em que o teste ao vivo seja útil.

Há uma opção no Explorador de variáveis ​​chamada Exclude unsupported types que, se desmarcada, mostrará todos os tipos de variáveis ​​nela.

Sim @cefn, este problema estava ocorrendo quando não estava no depurador. As variáveis ​​devem ser atualizadas no final, mas não o são, se é que aparecem. O depurador parece funcionar na maioria das vezes. Posso fazer com que eles apareçam se executar o depurador, mas depois eles não serão atualizados com as execuções subsequentes. Esses são tipos suportados, como tipos nativos de Python (string, int, lista, etc). Obrigado por investigar isso

Só queria voltar e dizer que as variáveis ​​agora estão aparecendo bem no Spyder 3.1.3 no Linux ao usar a seguinte configuração em um arquivo yml de ambiente virtual conda:

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

Tenho um palpite de que a versão do QT que estava executando antes pode estar relacionada ao problema. Tive muitos problemas com QT para python com outros projetos que só recentemente resolvi.

Editar: link do github em vez de colar o arquivo yml inteiro

Deixa pra lá. Claro que depois de muitos testes, assim que eu postar isso, ele não mostrará as variáveis ​​após uma execução no explorador de variáveis. Bem, aí está minha configuração. Espero que vocês consigam consertar isso, porque é sem dúvida meu recurso favorito e o motivo pelo qual uso o Spyder.

image

Tive o mesmo problema assim que atualizei do spyder 3.1.3 para o spyder 3.1.4. Observe que em Ferramentas / Preferências / Explorador de variáveis ​​/ Autorefresh há uma caixa de seleção que pode precisar ser marcada (a minha estava desligada após a atualização)

Eu examinei essa caixa e ela estava desmarcada, mas para minha consternação, verificá-la e reiniciar o spyder ainda não corrigiu esse problema aparentemente intermitente. Isso é bastante intrigante.

Isso foi corrigido? Eu executo meu código com sucesso, mas não consigo visualizar nenhuma das variáveis ​​no explorador de variáveis ​​depois. Por que é isso? Spyder 3.2.0 com Python 3.5.3.

enfrentando o mesmo problema aqui, estou arruinando a versão do Spyder: 3.1.4
Não é possível visualizar os tipos de dados !!
e sou novo aqui !!
me ajude a resolver isso. :)
capture

Obrigado @vishalnadagiri. Atualmente, matrizes de objetos (com dtype=object , ou seja, com dados não numéricos) não são suportadas. Já existe um PR em andamento (# 5260) para adicionar esta funcionalidade. Ele estará disponível em uma versão futura.

Enquanto isso:

  • você pode visualizar seus dados X se mantê-los como DataFrame (apenas remova .values de sua linha 10)
  • ou você pode vê-lo como array se remover os dados não numéricos (a primeira coluna no seu caso)

Obrigado @Prikers pela ajuda, acabei de ver o DataFrame removendo .values e funcionou bem e pode ver o DataFrame !!

Ainda vi esse problema ocorrer e, como resultado, executo o Spyder 2.3.8 quando realmente preciso contar com ele para atualizar e funcionar corretamente. O problema é que isso requer um matplotlib antigo, o que limita o que mais posso trabalhar.

Apenas por causa deste tópico, comecei a testar o Spyder 3.2.3 (mais recente suportado pelo conda a partir de agora) e vou descobrir que o explorador de variáveis ​​parece estar funcionando. mas juro que tentei no Linux e no Windows com versões mais recentes e só às vezes funciona.

A pior parte é quando ele funciona primeiro, preenche com variáveis ​​(então você acha que está funcionando), então para de funcionar para que os dados antigos permaneçam lá e você se pergunte por que suas variáveis ​​não estão sendo atribuídas corretamente, etc., mas na verdade é o explorador de variáveis morrendo. Quando isso acontece, eu verifico digitando um tipo compatível conhecido (int, string) no console do iPython e vejo que ele não foi adicionado ao explorador de variáveis. Fico feliz em ver alguma atividade aqui, vou verificar novamente porque adoro o explorador de variáveis. Recurso favorito do spyder com certeza!

@Prikers Estamos ansiosos por isso! Adoro poder levar as pessoas do Matlab para o Python e o código aberto usando o Spyder como gateway!

@sayboltm se você puder ter um exemplo simples reproduzível, estarei disposto a investigar!

Eu tenho um problema semelhante com o Spyder 3.1.2 e o Python 3.6. Eu vejo minhas variáveis ​​listadas no Variable Explorer. Mas se eu clicar duas vezes na matriz ou variável de matriz, não posso ver toda a matriz ou matriz inteira como costumava ser capaz com a versão 2. * do Sypder. Alguém pode me lançar algumas luzes sobre como contornar isso, por favor? Muito obrigado antecipadamente!

A mensagem de erro que recebi: 'O Spyder não conseguiu recuperar o valor desta variável do console', com a mensagem de erro adicional de 'A inspeção e configuração de valores durante a depuração em consoles IPython ainda não são suportados pelo Spyder'. No entanto, tenho quase certeza de que pude ver o conteúdo de todo o dataframe na versão 2. * do Spyder.

@JasperAustin você está tentando ver as variáveis ​​enquanto executa o depurador?
O seu problema é semelhante a este ?

Sim, @Prikers , estou tentando ver os arrays no depurador

Seu problema foi corrigido no Spyder 3.2. Por favor atualize.

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

Sim, @Prikers https://github.com/prikers , estou tentando ver o
arrays no depurador

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/spyder-ide/spyder/issues/4154#issuecomment-333970000 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AAWS7SsFdQRCZ039T-4G8PguiNdDVwpsks5sopppgaJpZM4MDpNC .

Obrigado, @ ccordoba12. Sou novo em Python. Como posso atualizar para o Spyder 3.2 a partir do 3.1.2?

Se você estiver usando o Anaconda, você precisa executar em um terminal do sistema (cmd.exe, Terminal.app ou xterm)

conda update spyder

Se não, por favor, corra

pip install -U spyder

Obrigado novamente @ ccordoba12 . Eu uso o Anaconda e tentei seu primeiro comando duas vezes, mas ainda obtive o seguinte erro:
C: \ Users \ U608025> conda update spyder
Buscando metadados do pacote ...

CondaHTTPError: HTTP Nenhum Nenhum para url
Decorrido: Nenhum

Ocorreu um erro de HTTP ao tentar recuperar este URL.
ConnectTimeout (MaxRetryError ("HTTPSConnectionPool (host = 'repo.continuum.io', porta
= 443): Máximo de tentativas excedido com url: /pkgs/free/win-64/repodata.json.bz2 (Causa
d por ConnectTimeoutError ( ection object at 0x0000000006D19A90>, 'A conexão com repo.continuum.io expirou
. (tempo limite de conexão = 9,15) ')) ",),)

eu corri

pip install -U spyder

Mas isso instalou o Spyder 3.1.2, não 3.2. (No Ubuntu 16.04 LTS)

Oi pessoal !

Eu tenho um pequeno problema com meu spyder. Em primeiro lugar, peço desculpas por escrever meu problema aqui! Isso não é tão importante, mas gostaria que alguém pudesse me ajudar ^^
Na verdade, quando eu abro o Spyder eu tenho muitas variáveis ​​no explorer, como ScalarType, cast ect ...
Existe uma maneira de evitar que essas variáveis ​​apareçam?

Muito obrigado!

@ldesmet no canto superior direito do plugin do explorador de variáveis, há um menu de engrenagem. Lá, existem opções para ocultar algumas variáveis, como:

  • Referências privadas (nomes de variáveis ​​começando com _ )
  • Todas as referências em maiúsculas
  • Tipos de dados não suportados

Essas opções atendem às suas necessidades?

Oi ! Obrigado pela sua resposta :)

Infelizmente, já marquei essas caixas. Ainda tenho essas variáveis ​​no explorador de variáveis ​​quando abro o Spyder (mais uma vez, não é grande coisa, eu apenas as apago manualmente, mas gostaria de parar de fazer isso ^^)

Obrigado novamente !

Assim que você abre o spyder (antes de executar qualquer script), essas variáveis ​​povoam o explorador de variáveis?

Sim, exatamente ! Eu posso juntar uma foto se você quiser.

@ldesmet Parece que o console IPython executa algum código assim que você o abre, possivelmente importando numpy. Você pode abrir suas Preferências no Spyder (no menu Tools ), clicar em IPython console e na guia Graphics e ver se Automatically import Pylab and Numpy modules está marcado? Em caso afirmativo, essa é provavelmente a causa. Caso contrário, outras coisas a verificar são a guia Startup e Use symbolic maths em Advanced Settings .

Se nada disso ajudar, uma imagem seria útil.

Oi, obrigado pela sua resposta !

Acabei de desmarcar a caixa "Importar módulos Pylab e Numpy automaticamente" e agora não vejo mais essas variáveis! Isso funciona perfeitamente!

Obrigado a vocês, @Prikers e @jitseniesen :)

Olá, sou novo no python e no spyder e tenho o spyder 3.2.4 com o Python 3.5 instalado. Eu tenho um código de tensorflow que funciona bem. No entanto, tenho problemas com a depuração, pois ela não mostra nenhum valor de variável associado ao tensorflow no console. Por favor, veja um exemplo de 'previsão' abaixo após executar o código no modo de depuração. 'predizer é a saída de uma função tensorflow.

ipdb> i
9
ipdb> predizer

Estou importando o seguinte;
importar numpy como np
importar tensorflow como tf
tempo de importação
import data_helpers

Existe uma solução alternativa para mostrar os valores da variável tensorflow no console, já que isso é importante para a depuração?

Obrigado!

Saudações!

Eu tenho um problema semelhante no explorador de variáveis. Estou usando o Spyder 3.5. Por favor, deixe-me saber se estou fazendo algo errado aqui.

Quando escrevo o código abaixo, consigo ver welcome_str listado como no explorador de variáveis

welcome_str='hello'
print(welcome_str)

Agora, se escrever o mesmo código usando __name __ == "__ main__", o explorador de variáveis ​​está vazio

#Main function
def main():

    #define constants here
    welcome_str='hello'

    #program flow
    print(welcome_str)

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

Eu experimentei o mesmo bug em minha tentativa de implementar o código a seguir no início do script como uma alternativa para usar manualmente% reset no console IPython para limpar o explorador de variável

de IPython import get_ipython
get_ipython (). magic ('reset -sf')

depurado ao importar alguns dados da GUI manualmente

Eu também estava tendo esse problema. Eu rastreei o uso de um script de inicialização IPython. Eu estava fazendo uma limpeza de variáveis ​​no final e del get_ipython aparentemente estava arruinando a conexão com o Explorador de Variáveis. Manter get_ipython no escopo parece fazê-lo funcionar corretamente.

get_ipython aparentemente estava arruinando a conexão com o Variable Explorer. Manter get_ipython no escopo parece fazê-lo funcionar corretamente.

Sim, get_ipython é muito importante, não apenas para Spyder, mas para IPython. Portanto, por favor, não o remova.

capture
os textos não estão sendo exibidos na coluna de valores de clean_answer, como resolver isso

@jagadishkt , abra uma nova edição sobre o seu problema em vez de postar em edições antigas e encerradas. Além disso, poste um código simples que possamos usar para reproduzir seu erro.

@ ccordoba12 obrigado. Ajudou

Tenho o mesmo problema com o Spyder 3.1.2 e o Python 3.6. As funções não são executadas corretamente - eu as vejo em execução, mas nada é retornado. Este também é o caso com funções de teste fictício (como a + b retornar c).

Eu estava tendo o mesmo problema com o spyder 3.3.6. Desinstalei o numpy, spyder e reinstalei os dois e o problema foi resolvido.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

keith-golden picture keith-golden  ·  3Comentários

JesterEE picture JesterEE  ·  3Comentários

spyder-bot picture spyder-bot  ·  3Comentários

spyder-bot picture spyder-bot  ·  3Comentários

cchu08 picture cchu08  ·  3Comentários