2017-05-19 54 views
-1

我有蟒蛇4.3.1包加載錯誤和蜘蛛

(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 

當我「運行文件」中的蜘蛛「a1.py」,一個TestClass的實例在蜘蛛3.1.4 3個蟒蛇2.7文件編輯TT被創造了,我跑按照蜘蛛的IPython的控制檯代碼:

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

它工作正常,但在我RUNFILE 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的成爲失蹤,在我的經驗,任何「運行文件」運營商在蜘蛛會導致丟失numpy的。任何有關「tt」的代碼都不能在a2.py中寫入,因爲在運行新文件時缺少導入的tt包。 這是一個錯誤?還是Spder,Ipython需要進一步配置或設置參數?或蜘蛛的「runfile」命令需要額外的參數?

我發瘋與此錯誤,請告訴我在哪裏出了錯。

+0

([在水蟒和Spyder的包加載錯誤]的可能的複製http://stackoverflow.com/questions/44061754/package-load -ror-in-anaconda-and-spyder) – darthbith

回答

0

「蜘蛛」是「Spyder的」我讓拼寫錯誤。

Spyder的是蟒蛇

發展環境,因爲Spyder的擁有「用戶模塊Reloade(UMR)」屬性,擺在我們「運行文件」功能運行的腳本,Spyder的將重新加載所有用戶創建的模塊。

在我的環境,Spyder的重裝的TestClass但不會重新加載numpy的,並識別TestClass界numpy的被卸載,所以「運行文件」可能導致用戶模塊無效。

在「工具 - >首選項 - > Python解釋」我們可以關閉UMR

+1

「The Spider」是「Spyder」,我犯了拼寫錯誤。「 - 那麼爲什麼你沒有在你的問題中糾正它? – MarianD