我在Anaconda 4.3.1的Spider 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
当我" runfile" " a1.py"在Spider中,创建了一个TestClass实例tt,并在Spider的IPython控制台中运行以下代码:
>>>tt.getArray()
Out[9]:
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
它工作正常,但在我在Spider中运行文件a2.py(一个空文件)后,我重新运行" tt.getArray()"在Spider的IPython控制台中,出现错误:
tt.getArray()
Traceback (most recent call last):
File "<ipython-input-11-50cc0c83ed77>", line 1, in <module>
tt.getArray()
File "TestClass.py", line 6, in getArray
return np.zeros((3,4));
AttributeError: 'NoneType' object has no attribute 'zeros'
根据我的经验,numpy失踪了,任何&#34; runfile&#34;蜘蛛中的操作员会导致丢失numpy。关于&#34; tt&#34;的任何代码无法在a2.py中写入,因为在运行新文件时缺少已导入的导入包。
这是一个错误吗?或Spder,Ipython需要进一步配置或设置参数?或者&#34; runfile&#34;蜘蛛中的命令需要额外的参数吗?
我已经厌倦了这个错误,请告诉我哪里出错了。
答案 0 :(得分:0)
&#34;蜘蛛&#34;是&#34; Spyder&#34;我拼错了。
Spyder是anaconda的开发环境
因为Spyder有&#34;用户模块重新加载(UMR)&#34;财产,我们&#34; runfile&#34;函数运行一个脚本,Spyder将重新加载所有用户创建的模块。
在我的环境中,Spyder重新加载TestClass但没有重新加载numpy,并且卸载了TestClass有界numpy,所以&#34; runfile&#34;可能导致用户模块无效。
In&#34;工具 - &gt;偏好设置 - &gt; Python解释器&#34;我们可以关闭UMR