2010-11-05 31 views
1

所以,我一直在python編程,我遇到了這個非常惱人的問題。我寫了一個小型矩陣庫,並開始在另一個模塊中使用它(例如import matrixlib)。我會發現一個bug,修復它並再次運行程序。錯誤仍然存​​在。我改變了python代碼,但python似乎沒有讀取更改

我想扔幾張打印報表來看看發生了什麼,但是他們不打印。我最終發現我的更改沒有用python註冊。所以我開始刪除.pyc文件(預編譯的python),但沒有幫助。

我最終放棄了,直接從矩陣庫文件開始編程,但現在這個問題已經回來。我在一份印刷聲明中發現了一種方法,解決了這個問題,然後把它拿出來了。但它仍然打印。我甚至在一個不同於IDLE的文本編輯器中搜索'print',但在代碼中只發現了一條打印語句。

這實際上並不是一個代碼問題,我可能會以某種方式破壞我的python安裝。 (這隻發生在我的Windows盒子,而不是我的Linux盒子)。如果你想看代碼,請隨意。 hiesenbug-print語句在我的代碼中被註釋掉,但仍然執行。

def det(self): 
     #Had better be a square matrix. 
     if self.colCount() != self.rowCount(): 
      return None 
     #Are we a 1x1 matrix? 
     if self.colCount() == self.rowCount() == 1: 
      return self.a[0][0] 
     #Are we a 2x2 matrix? 
     if self.colCount() == self.rowCount() == 2: 
      return self.a[0][0]*self.a[1][1]-self.a[1][0]*self.a[0][1] 
     #Not a 2x2... so lets start recursing. 
     d = 0 
     for e in range(0,self.colCount()): 
      tmp = partition(self.a, 0, e) 
      if e%2 == 0: 
       d = d + self.a[0][e]*self.detRecursive(tmp) 
      else: 
       d = d - self.a[0][e]*self.detRecursive(tmp) 
     #print d 
     return d 

    def detRecursive(self, matrix): 
     m = Matrix() 
     m.setMatrix(matrix) 

     return m.det() 

    def partition(a, r, c): 
     out = [] 
     for row in range(0, len(a)): 
      if r != row: 
       out.append([]) 
       for col in range(0, len(a[0])): 
        if col != c: 
         out[-1].append(a[row][col]) 
     return out 
+1

不是你的問題,但你可以使用numpy包中的矩陣。它更快,幷包含您需要的所有方法:http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.html。決定因素在線性代數分組http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.det.html#numpy.linalg.det中。 leslie函數也在scipy中實現:http://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.leslie.html – SiggyF 2010-11-05 23:03:39

+0

由於它不是代碼問題,爲什麼包含所有代碼?爲什麼不提供顯示問題的最小**代碼示例? – 2010-11-05 23:22:46

+0

這是一個課程項目,我在那裏編寫圖書館。至於代碼,我無法打折我實際犯了一個錯誤的可能性。無論如何,它在一個很好的格式化代碼塊中...... – mamidon 2010-11-05 23:42:32

回答

4

我認爲,當您安裝包你第一次做的事:

python setup.py install 

而不是:

python setup.py develop 

,因爲當你做setup.py install的setup.py只是複製系統路徑中的軟件包文件,所以每次在軟件包文件中進行更改時,都必須在另一方面重新運行setup.py install 以'開發模式'安裝你的軟件包,這意味着它只是爲你的「本地」軟件包文件創建一個鏈接(一個蛋),以便檢測到庫「本地」文件的每一個變化(它只是一個鏈接)

希望這將有助於:)

1

右鍵你在主程序中導入matrixlib後:

print(repr(matrixlib)) 
raise SystemExit 

檢查實際加載模塊的位置。

相關問題