Spyder: 变量不会显示在变量浏览器中(Python 3.6)

创建于 2017-02-16  ·  46评论  ·  资料来源: spyder-ide/spyder

描述

哪些步骤将重现该问题?

  1. 开启Spyder
  2. 用变量(甚至是常量)编写一些代码
  3. 运行代码,变量不显示,甚至常量“ epsilon”也不显示

什么是预期的输出?
我希望在变量浏览器中看到一些输出。 在Spyder 3.1.2 Linux和Windows上都会发生这种情况。

请在下面提供任何附加信息
这是我的代码,试图实现高斯消除:

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

版本和主要组成部分

  • Spyder版本:3.1.2
  • 的Python版本:3.6.0
  • Qt版本:Linux上的5.6.2,PyQt5 5.6

依存关系

使用numpy

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

最有用的评论

变量资源管理器中有一个名为Exclude unsupported types ,如果取消选中,它将显示所有变量类型。

所有46条评论

它仅在Python 3.6中发生吗?

据我所知,是的。 我在其他Windows 7计算机上的Python 3.5和Spyder 2.3.8没有这些问题。

请更新至Spyder 3.1.3,然后重试。 我们的测试在Python 3.6中运行得很好,并且它们检测对象是否显示在“变量资源管理器”中。

我相信我也遇到了这个问题,并且我在Ubuntu上运行3.1.3。 ipdb报告...

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

我能够针对这个简单的文件看到变量浏览器的功能...

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

...并且正确地可视化了substitutions字典

但是,当对此文件进行交互运行时...
https://github.com/cefn/avatap/blob/6ad61cb3b8e198acae1caa6f187726fea4834b30/python/test.py
...即使在第一个本地导入的第一行中,“变量资源管理器”窗口中也没有显示任何内容。

但是,交互式ipdb窗格确实能够在运行该文件时检查变量,例如,在test.py的第28行的Spyder断点处,我可以执行...

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

...而变量浏览器中什么也没有显示。

我确保通过apt-get purge删除所有的spyder和spyder3 ubuntu软件包,然后通过pip进行安装,例如...

sudo -H pip3 install --update spyder

为了确保没有任何奇怪的事情发生,我然后跑了...

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

...将所有pip3软件包升级到最新版本,但Spyder的Variable Explorer仍不配合。

好的,如果此问题与调试有关,则为错误,已在问题#3711中报告。

它将在Spyder 3.2中修复。

糟糕,我认为应该更详细地研究一下OP可能没有像我想象的那样通过调试器运行代码,因此我可能错误地劫持了该错误。 我还没有意识到在运行结束时没有变量查看器指示“模块”符号的状态,因此我只是假设描述的行为与调试有关。 我的错。 也许OP可以澄清。

@ ccordoba12是否有拉取请求,我可以在此功能下针对预期在spyder 3.2中发布的修复程序提供此功能的测试? 我尝试按照https://github.com/cefn/spyder/pull/1将您的debugger-improvements分支合并到spyder:head中,但这在描述的调试方案下不会改变Variable Explorer的行为(尽管IDE看起来很稳定并且可以正常运行)。

也许这是解决该问题的3.2愿望清单项目,而尚未编写解决该问题的代码? 让我知道实时测试是否有用。

变量资源管理器中有一个名为Exclude unsupported types ,如果取消选中,它将显示所有变量类型。

@cefn不在调试器中时发生此问题。 变量应该在末尾更新,但是即使它们根本不显示也不会更新。 调试器似乎大部分时间都在工作。 如果运行调试器,我可以使它们显示出来,但是之后它们不会随着后续运行而更新。 这些是受支持的类型,例如本机Python类型(字符串,整数,列表等)。 感谢您查看这个

只是想插话,并说在conda虚拟环境yml文件中使用以下配置时,变量现在在Linux的Spyder 3.1.3中可以正常显示:

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

我有一种预感,我之前运行的QT版本可能与此问题有关。 我在QT for python和其他项目中遇到了很多问题,而这些问题我最近才得到解决。

编辑:github链接而不是粘贴整个yml文件

没关系。 当然,经过很多测试,我一发布,在变量浏览器中运行后就不会显示变量。 好吧,这是我的配置。 我希望你们能解决这个问题,因为这是我最喜欢的功能,也是我使用Spyder的原因。

image

从spyder 3.1.3升级到spyder 3.1.4后,我遇到了同样的问题。 请注意,在“工具” /“首选项” /“变量资源管理器” /“自动刷新”下,可能需要选中一个复选框(升级后,该复选框已关闭)

我检查了那个盒子,并没有选中它,但是令我沮丧的是,检查它,重新启动spyder仍然不能解决这个看似断断续续的问题。 这很令人困惑。

这个问题解决了吗? 我成功运行了代码,但之后无法在变量浏览器中查看任何变量。 为什么是这样? Spyder 3.2.0和Python 3.5.3。

在这里面临相同的问题,我毁了Spyder版本:3.1.4
无法查看数据类型!
在这里很新!
帮我解决。 :)
capture

谢谢@vishalnadagiri。 当前不支持对象数组(带有dtype=object ,意味着具有非数字数据)。 已经有正在进行的PR(#5260)添加此功能。 它将在将来的版本中提供。

与此同时:

  • 如果您将数据保留为DataFrame X则可以查看数据.values
  • 或者,如果您删除非数字数据(案例中的第一列),则可以将其查看为array

谢谢@Prikers的帮助,我只是通过删除.values来查看DataFrame,它工作正常并且可以查看DataFrame!

我仍然看到此问题的发生,因此当我真的需要依靠它进行更新和正常工作时,我运行了Spyder 2.3.8。 问题是,这需要旧的matplotlib,这限制了我可以使用的其他东西。

出于这个线程的缘故,我已经开始测试Spyder 3.2.3(到目前为止,最新的conda支持)并确定变量资源管理器似乎正在运行。 但是我发誓我尝试在Linux和Windows上使用较新的版本,但有时只能使用。

最糟糕的部分是,当它开始工作时,先填充变量(因此您认为它可以工作),然后退出工作,以便旧数据保留在那里,并且您想知道为什么变量没有正确分配等,但实际上是变量资源管理器快死了发生这种情况时,我通过在iPython控制台中键入已知的受支持类型(int,字符串)进行验证,并查看它是否未添加到变量资源管理器中。 很高兴在这里看到一些活动,因为我喜欢变量浏览器,所以我会回来查看。 蜘蛛最喜欢的功能!

@Prikers期待这个! 希望能够使用Spyder作为网关使人们脱离Matlab进入Python和开源!

@sayboltm如果您有一个可复制的简单示例,我将愿意进行调查!

我在Spyder 3.1.2和Python 3.6中遇到了类似的问题。 我的确在变量浏览器中看到了我的变量。 但是,如果我双击数组或矩阵变量,则无法看到整个数组或整个矩阵,就像以前使用2. *版本的Sypder一样。 有人可以帮我解决这个问题吗? 在此先感谢!

我收到的错误消息是:“ Spyder无法从控制台检索此变量的值”,还有其他错误消息:“ Spyder尚不支持在IPython控制台中调试时检查和设置值”。 不过,我非常确定我可以在2. *版本的Spyder中看到整个数据框的内容。

@JasperAustin您是否在尝试运行调试器时查看变量?
您的问题与问题类似吗?

是的, @Prikers ,我试图在调试器中查看数组

您的问题已在Spyder 3.2中修复。 请更新。

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

是的, @Prikers https://github.com/prikers ,我正在尝试查看
调试器中的数组

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/spyder-ide/spyder/issues/4154#issuecomment-333970000
或使线程静音
https://github.com/notifications/unsubscribe-auth/AAWS7SsFdQRCZ039T-4G8PguiNdDVwpsks5sopppgaJpZM4MDpNC

谢谢@ ccordoba12。 我是Python的新手。 如何从3.1.2更新到Spyder 3.2?

如果您正在使用Anaconda,则需要在系统终端(cmd.exe,Terminal.app或xterm)中运行

conda update spyder

如果没有,请运行

pip install -U spyder

再次感谢@ ccordoba12 。 我使用Anaconda,并尝试了两次您的第一个命令,但仍然收到以下错误:
C:\ Users \ U608025> conda更新spyder
正在获取包元数据...

CondaHTTPError:HTTP无无url
过去时间:无

尝试检索此URL时发生HTTP错误。
ConnectTimeout(MaxRetryError(“ HTTPSConnectionPool(host ='repo.continuum.io',port
= 443):网址超过了最大重试次数:/pkgs/free/win-64/repodata.json.bz2(原因
d由ConnectTimeoutError( 0x0000000006D19A90上的安装对象>,'与repo.continuum.io的连接超时
。 (connect timeout = 9.15)'))“)))

我跑了

点安装-U spyder

但是安装了Spyder 3.1.2,而不是3.2。 (在Ubuntu 16.04 LTS上)

大家好 !

我的望远镜有一点问题。 首先,我很抱歉在这里写下我的问题! 那不是很重要,但我希望有人可以帮助我^^
实际上,当我打开Spyder时,资源管理器中有很多变量,例如ScalarType,cast ect ...
有没有一种防止这些变量出现的方法?

十分感谢 !

变量资源管理器插件右上角的@ldesmet有一个齿轮菜单。 在那里,有一些选项可以隐藏一些变量,例如:

  • 私有引用(变量名称以_开头)
  • 所有大写引用
  • 不支持的数据类型

这些选项是否符合您的需求?

嗨! 谢谢您的回答 :)

不幸的是,我已经选中了这些框。 当我打开Spyder时,变量浏览器中仍然有这些变量(再一次,没什么大不了的,我只是手动删除它们,但我想停止这样做^^)

再次感谢 !

一旦打开spyder(在运行任何脚本之前),这些变量就会填充变量资源管理器?

对,就是这样 ! 如果您愿意,我可以加入图片。

@ldesmet似乎IPython控制台一打开它就会运行一些代码,可能会导入numpy。 您可以在Spyder中打开“偏好设置”(在Tools菜单中),单击IPython consoleGraphics选项卡,然后查看是否已选中Automatically import Pylab and Numpy modules吗? 如果是这样,那可能是原因。 如果没有,其他要检查的内容是Startup标签和Use symbolic maths下的Advanced Settings

如果以上方法均无济于事,则使用图片很有用。

嗨,谢谢您的回答!

我刚刚取消选中“自动导入Pylab和Numpy模块”框,现在我不再看到这些变量了! 那太完美了!

谢谢你们@Prikers@jitseniesen :)

您好,我是python和spyder的新手,并且安装了Python 3.5的spyder 3.2.4。 我有一个运行良好的tensorflow代码。 但是,我在调试方面遇到问题,因为它在控制台中没有显示与tensorflow相关的任何变量值。 在调试模式下运行代码后,请参见下面的示例“预测”。 '预测是张量流函数的输出。

ipdb>我
9
ipdb>预测

我正在导入以下内容;
将numpy导入为np
将tensorflow作为tf导入
导入时间
导入data_helpers

是否有解决方法在控制台中显示tensorflow变量值,因为这对于调试很重要?

谢谢!

问候!

我在变量浏览器中有一个类似的问题。 我正在使用Spyder 3.5。 如果我在这里做错了任何事情,请告诉我。

当我写下面的代码时,我能够看到在变量浏览器中列出的welcome_str

welcome_str='hello'
print(welcome_str)

现在,如果使用__name __ ==“ __ main__”编写相同的代码,则变量资源管理器为空

#Main function
def main():

    #define constants here
    welcome_str='hello'

    #program flow
    print(welcome_str)

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

我在尝试在脚本开头实施以下代码作为在IPython控制台中手动使用%reset清除变量资源管理器的替代方法时遇到相同的错误

从IPython导入get_ipython
get_ipython()。magic('reset -sf')

从GUI手动导入一些数据时调试

我也有这个问题。 我追溯到使用IPython启动脚本。 我在最后进行了一些变量清理,而del get_ipython显然破坏了与变量浏览器的连接。 将get_ipython保留在范围内似乎可以使其正常工作。

get_ipython显然破坏了与变量浏览器的连接。 将get_ipython保留在范围内似乎可以使其正常工作。

是的,get_ipython非常重要,不仅对于Spyder,而且对于IPython。 因此,请不要删除它。

capture
文本未显示在clean_answer的“值”列中,如何解决此问题

@jagadishkt ,请打开有关您的问题的新期刊,而不是在旧的和已关闭的期刊中发帖。 另外,请发布一个简单的代码,我们可以用来重现您的错误。

@ ccordoba12谢谢。 它帮助了

我对Spyder 3.1.2和Python 3.6有相同的问题。 函数未正确执行-我看到它们正在运行,但是什么也没有返回。 虚拟测试功能(例如a + b返回c)也是如此。

我在使用spyder 3.3.6时遇到了同样的问题。 我卸载了numpy,spyder并重新安装了两者,然后问题已解决。

此页面是否有帮助?
0 / 5 - 0 等级