粘贴到 Spyder 控制台的代码*结尾*处出现错误,所有*前面的*对象丢失

问题描述 投票:0回答:1

我正在尝试此代码进行聚类,调整如下:

import os
os.chdir("C:/path/to/working/directory")
import numpy as np
Dist = np.load('20240612.1201_Dist.npz')['Dist'] # Load distance matrix
Dist.shape # 30,011 x 30,011 # Check that matrix shape is square
from scipy.cluster.hierarchy import fclusterdata
t=3 # The maximum distance
y_pred = fclusterdata(Dist.T, t, criterion='distance')
   # Used transpose to convert lower triangular data to upper triangular
# import datetime as dt # Unfortunately, this was missing !!!!!!

# Where the error occurred
print( dt.datetime.now(), ": Finished ",
       os.path.basename(__file__), sep='' )

问题是我将文本文件中的代码片段复制并粘贴到 Spyder 控制台中,所以我缺少一个

import datetime as dt
。 它在代码末尾用于打印完成时间,并且由于我记下了开始时间,所以我可以确定需要多长时间。

当我将代码粘贴到 Spyder 控制台时,Windows 任务管理器显示 Python 进程正在崩溃。 由于我必须离开,所以我让进程继续运行。 当我早上来的时候,我看到了缺少

datetime
模块的错误:

Traceback (most recent call last):
  Cell In[1], line 12
    print( dt.datetime.now(), ": Finished ",
NameError: name 'dt' is not defined

我很失望地发现在错误代码之前发生的所有对象都没有显示在 Spyder 的变量资源管理器中,例如

t
y_pred
。 它们存在于命名空间中,并且也显示为
dir()
:

>>> t
Out[3]: 3

>>> y_pred
Out[4]: array([ 4184, 29948,  4185, ..., 20769, 20751, 20752], dtype=int32)

>>> dir()
Out[5]:
['Dist',
 <...snip...>
 't',
 'y_pred']

单击变量资源管理器上的“刷新”不会更改任何内容。 有没有办法强制Spyder重新获取变量资源管理器的内容?

我在 Windows 10 上使用 Anaconda 的 Spyder 5.4.3。

后注: 即使像

t=t
x=t
x=5
这样简单的事情也不会导致变量资源管理器发生变化。 在错误发生之前这不是问题。

spyder
1个回答
0
投票

基于这个答案,我尝试切换

Tools > Preferences > Variable explorer
下的一些复选框。 这“唤醒”了变量浏览器。 它不仅显示新变量,而且在为它们分配新值时显示它们已更新。

虽然我引用了具有类似症状的问答,但情况有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.