Spyder: Переменные не отображаются в проводнике переменных (Python 3.6)

Созданный на 16 февр. 2017  ·  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: 5.6.2, PyQt5 5.6 в Linux

Зависимости

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?

Насколько я могу судить, да. У меня не было этих проблем с Python 3.5 и Spyder 2.3.8 на другом моем компьютере с Windows 7.

Обновите Spyder до 3.1.3 и попробуйте еще раз. Наши тесты отлично работают в Python 3.6, и они определяют, отображаются ли объекты в обозревателе переменных.

Я считаю, что у меня тоже возникла эта проблема, и я использую версию 3.1.3 на Ubuntu. Отчеты 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 dict

Однако при интерактивном запуске этого файла ...
https://github.com/cefn/avatap/blob/6ad61cb3b8e198acae1caa6f187726fea4834b30/python/test.py
... ничего не отображается в окне обозревателя переменных, даже с самой первой строки первого локального импорта.

Однако интерактивная панель ipdb действительно может проверять переменные при запуске этого файла, например, в точке останова Spyder в строке 28 в test.py, я могу ...

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

... в то время как в проводнике переменных вообще ничего не отображается.

Я убедился, что удалил все пакеты ubuntu spyder и spyder3 через apt-get purge , а затем установил через 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 не запускал код через отладчик, как я предполагал, поэтому я мог по ошибке захватить эту ошибку. Я не осознавал, что существует средство просмотра переменных, указывающее состояние символов «модуля» в конце прогона, поэтому я просто предположил, что описанное поведение было связано с отладкой. Виноват. Возможно, ОП может уточнить.

@ ccordoba12 есть ли запрос на debugger-improvements в spyder: head согласно https://github.com/cefn/spyder/pull/1, но это не изменило поведение обозревателя переменных в описанном сценарии отладки ( хотя IDE кажется стабильной и в остальном функциональной).

Возможно, это элемент списка желаний 3.2, чтобы решить эту проблему, а код для ее решения еще не написан? Дайте мне знать, если есть что-нибудь, где можно использовать живое тестирование.

В обозревателе переменных есть параметр Exclude unsupported types который, если не отмечен, отобразит все типы переменных.

Да @cefn, эта проблема

Просто хотел вернуться и сказать, что переменные теперь отображаются нормально в Spyder 3.1.3 в Linux при использовании следующей конфигурации в yml-файле виртуальной среды conda:

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

У меня есть подозрение, что версия QT, которую я использовал раньше, может быть связана с проблемой. У меня было много проблем с QT для 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) для добавления этой функции. Он будет доступен в следующем выпуске.

Между тем:

  • вы можете просматривать свои данные X если вы сохраните их как DataFrame (просто удалите .values в строке 10)
  • или вы можете просмотреть его как array если вы удалите нечисловые данные (первый столбец в вашем случае)

Спасибо @Prikers за помощь, мне только что нужно было просмотреть DataFrame, удалив .values и он работает нормально и может просматривать DataFrame !!

Я все еще сталкивался с этой проблемой, и в результате я запускаю Spyder 2.3.8, когда мне действительно нужно рассчитывать на его обновление и правильную работу. Проблема в том, что для этого требуется старый matplotlib, который ограничивает то, с чем еще я могу работать.

Просто ради этой темы я начал тестирование Spyder 3.2.3 (последняя версия, поддерживаемая conda на данный момент), и подумайте, что обозреватель переменных работает. но я клянусь, что пробовал использовать Linux и Windows с более новыми версиями, и это только иногда работает.

Хуже всего, когда он сначала работает, заполняется переменными (так что вы думаете, что он работает), а затем прекращает работу, поэтому старые данные остаются там, и вы удивляетесь, почему ваши переменные не назначаются должным образом и т.д., но на самом деле это обозреватель переменных умирает. Когда это происходит, я проверяю, набирая известный поддерживаемый тип (int, string) в консоли iPython и вижу, что он не добавлен в проводник переменных. Рад видеть здесь некоторую активность, я проверю, так как мне нравится проводник переменных. Безусловно, любимая функция Spyder!

@Prikers С нетерпением жду этого! Мне нравится иметь возможность увести людей от Matlab к Python и открытым исходным кодам, используя Spyder в качестве шлюза!

@sayboltm, если у вас есть воспроизводимый простой пример, я буду готов исследовать!

У меня была аналогичная проблема со Spyder 3.1.2 и Python 3.6. Я вижу свои переменные в списке в обозревателе переменных. Но если я дважды щелкну массив или переменную матрицы, я не смогу увидеть весь массив или всю матрицу, как это было раньше с версией Sypder 2. *. Кто-нибудь может пролить свет на то, как обойти это, пожалуйста? Заранее большое спасибо!

Полученное мной сообщение об ошибке: «Spyder не удалось получить значение этой переменной из консоли» с дополнительным сообщением об ошибке «Проверка и установка значений во время отладки в консолях IPython еще не поддерживается Spyder». Тем не менее, я почти уверен, что смог увидеть содержимое всего фрейма данных в версии 2. * Spyder.

@JasperAustin вы пытаетесь увидеть переменные во время работы отладчика?
Ваша проблема похожа на эту ?

Да, @Prikers , я пытаюсь увидеть массивы в отладчике

Ваша проблема была исправлена ​​в Spyder 3.2. Пожалуйста обновите.

От 10.03.17 в 15:34, JasperAustin написать:
>

Да, @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. Как мне обновить версию до Spyder 3.2 с версии 3.1.2?

Если вы используете Anaconda, вам необходимо запустить в системном терминале (cmd.exe, Terminal.app или xterm)

conda update spyder

Если нет, запустите

pip install -U spyder

Еще раз спасибо
C: \ Users \ U608025> conda update spyder
Получение метаданных пакета ...

CondaHTTPError: HTTP Нет Нет для URL
Прошло: нет

Ошибка HTTP при попытке получить этот URL.
ConnectTimeout (MaxRetryError ("HTTPSConnectionPool (host = 'repo.continuum.io', порт
= 443): превышено максимальное количество повторных попыток с URL: /pkgs/free/win-64/repodata.json.bz2 (Причина
d от ConnectTimeoutError ( объект действия по адресу 0x0000000006D19A90>, 'Время ожидания подключения к repo.continuum.io истекло
. (время ожидания подключения = 9.15) ')) ",),)

Я бежал

pip install -U spyder

Но это установило Spyder 3.1.2, а не 3.2. (В Ubuntu 16.04 LTS)

Привет всем !

У меня небольшая проблема с моим спайдером. Сначала прошу прощения за то, что написал здесь свою проблему! Это не так важно, но мне бы хотелось, чтобы кто-нибудь мне помог ^^
На самом деле, когда я открываю Spyder, в проводнике появляется множество переменных, таких как ScalarType, cast ect ...
Есть ли способ предотвратить появление этих переменных?

Большое тебе спасибо !

@ldesmet в правом верхнем углу плагина проводника переменных есть меню cog. Там есть опции, чтобы скрыть некоторые переменные, такие как:

  • Частные ссылки (имена переменных, начинающиеся с _ )
  • Все ссылки в верхнем регистре
  • Неподдерживаемые типы данных

Соответствуют ли эти варианты вашим потребностям?

Привет ! Спасибо за ваш ответ :)

К сожалению, я уже отмечал эти флажки. У меня все еще есть эти переменные в проводнике переменных, когда я открываю Spyder (опять же, не имеет большого значения, я просто удаляю их вручную, но я бы хотел прекратить это делать ^^)

Еще раз спасибо !

Как только вы открываете spyder (перед запуском любого скрипта), эти переменные заполняют проводник переменных?

Да, точно ! Я могу присоединиться к картинке, если хочешь.

@ldesmet Похоже, консоль IPython запускает какой-то код, как только вы ее открываете, возможно, импортируя numpy. Можете ли вы открыть свои настройки в Spyder (в меню Tools ), щелкнуть IPython console и вкладку Graphics и посмотреть, отмечен ли Automatically import Pylab and Numpy modules ? Если да, то, вероятно, причина в этом. В противном случае следует проверить также вкладку Startup и Use symbolic maths под Advanced Settings .

Если ничего из этого не помогает, пригодится картинка.

Привет, спасибо за ответ!

Я только что снял флажок «Автоматически импортировать модули Pylab и Numpy», и теперь я больше не вижу этих переменных! Это отлично работает!

Спасибо вам обоим, @Prikers и @jitseniesen :)

Здравствуйте, я новичок в python и spyder, и у меня есть spyder 3.2.4 с установленным Python 3.5. У меня есть код тензорного потока, который работает нормально. Однако у меня есть проблемы с отладкой, поскольку он не показывает никаких значений переменных, связанных с tenorflow, в консоли. См. Пример «прогнозирования» ниже после запуска кода в режиме отладки. 'прогнозировать - это результат функции тензорного потока.

ipdb> я
9
ipdb> предсказать

Я импортирую следующее;
импортировать numpy как np
импортировать тензорный поток как tf
время импорта
import data_helpers

Есть ли обходной путь для отображения значений переменных тензорного потока в консоли, поскольку это важно для отладки?

Благодаря!

Приветствия!

У меня аналогичная проблема в проводнике переменных. Я использую 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()

У меня возникла та же ошибка при попытке реализовать следующий код в начале скрипта в качестве альтернативы ручному использованию% reset в консоли IPython для очистки проводника переменных

из IPython import get_ipython
get_ipython (). magic ('сброс -sf')

отлаживается при импорте некоторых данных из графического интерфейса вручную

У меня тоже была эта проблема. Я проследил это до использования сценария запуска 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 return c).

У меня была такая же проблема со spyder 3.3.6. Я удалил numpy, spyder и переустановил оба, после чего проблема была решена.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги