anaconda和Spyder中的包加载错误

时间:2017-05-19 04:57:15

标签: model load ipython anaconda spyder

我在Anaconda 4.3.1的Spyder 3.1.4中编辑了三个python 2.7文件

(1). TestClass.py :Just define a class 
import numpy as np
class TestClass:
    def getArray(self):
        return np.zeros((3,4));
(2). a1.py
from TestClass import *;
tt=TestClass();

(3). a2.py
#just a empty python file

当我在Spyder中“runfile”“a1.py”时,创建了一个TestClass实例tt,并在Spyder的IPython控制台中运行以下代码:

tt.getArray()
Out[9]: 
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])

它工作正常,但是在我在Spider中运行文件a2.py(一个空文件)后,我在Spyder的IPython控制台中重新运行“tt.getArray()”时出现错误:

tt.getArray() 回溯(最近一次调用最后一次):

文件“”,第1行,in     tt.getArray()

在getArray中输入第6行的“TestClass.py”     return np.zeros((3,4));

AttributeError:'NoneType'对象没有属性'zeros' numpy变得不见了,根据我的经验,Spyder中的任何“runfile”操作符都会导致缺少numpy。任何关于“tt”的代码都不能写入a2.py,因为在运行新文件时缺少tt alread导入的包。这是一个错误吗?或者Spyder,Ipython需要进一步配置或设置参数?或者spyder中的“runfile”命令需要额外的参数吗?

我已经厌倦了这个错误,请告诉我哪里出错了。

1 个答案:

答案 0 :(得分:2)

因为Spyder有"用户模块重新加载(UMR)"财产,我们" runfile"函数运行一个脚本,Spyder将重新加载所有用户创建的模块。

在我的环境中,Spyder重新加载TestClass但没有重新加载numpy,并且卸载了TestClass有界numpy,所以" runfile"可能导致用户模块无效。

在 工具 - >首选项 - > Python解释器 我们可以关闭UMR