所以,我一直在用 python 编程,但遇到了这个非常烦人的问题。我编写了一个小型矩阵库并开始在另一个模块中使用它(例如,import matrixlib)。我会找到一个错误,修复它并再次运行程序。虫子还在。
我会加入一些打印语句来查看发生了什么,但它们不会打印。我最终发现我的更改没有在 python 中注册。所以我开始删除 .pyc 文件(预编译的 python),但这没有帮助。
我最终放弃了,直接从矩阵库文件开始编程,但现在这个问题又回来了。我加入了一个打印语句来弄清楚一个方法发生了什么,解决了这个问题,然后把它拿出来。但它仍然打印。我什至在与 IDLE 不同的文本编辑器中搜索了“打印”,但在代码中只找到了一个打印语句。
这不是一个真正的代码问题,我可能以某种方式搞砸了我的 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
Run Code Online (Sandbox Code Playgroud)
我认为当您第一次安装软件包时:
python setup.py install
Run Code Online (Sandbox Code Playgroud)
而不是:
python setup.py develop
Run Code Online (Sandbox Code Playgroud)
因为当您执行setup.py installsetup.py 时,只需复制系统路径中的包文件,因此每次更改包文件时,您都必须重新运行setup.py install
,另一方面,setup.py develop在“开发模式”下安装您的包,这意味着它只是创建一个链接(一个鸡蛋)到你的“本地”包文件,这样库“本地”文件中的每一个变化都会被检测到(它只是一个链接)
希望这会有所帮助:)