我修改了Python代码,但Python似乎没有读取这些更改
我最近在用Python编程,遇到了一个非常烦人的问题。我写了一个小的矩阵库,然后在另一个模块里用它(比如,import matrixlib)。每次发现一个bug,修复后再运行程序,结果bug还是在。
我试着加了几个打印语句来看看发生了什么,但它们根本不打印出来。后来我才明白,我的修改没有被Python识别到。所以我开始删除.pyc文件(这是预编译的Python文件),但这也没用。
最后我放弃了,直接在矩阵库的文件里编程,但这个问题又回来了。我加了一个打印语句来弄清楚某个方法的情况,修复了问题后把它删掉,但它还是在打印。我甚至在一个不同的文本编辑器里搜索了'print',结果在代码里根本找不到任何打印语句。
这其实不算是代码的问题,我可能搞砸了我的Python安装。(这个问题只在我的Windows电脑上出现,在Linux电脑上没有)。如果你想看看代码,随便看看。那个被注释掉的打印语句在我的代码里,居然还是执行了。
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
2 个回答
1
在你主程序中导入 matrixlib
之后:
print(repr(matrixlib))
raise SystemExit
检查一下实际加载的模块的位置。
6
我觉得当你第一次安装你的包的时候,你可能是用:
python setup.py install
而不是:
python setup.py develop
因为当你使用 setup.py install
的时候,setup.py 只是把包的文件复制到系统路径里。所以每次你对包的文件做了修改后,都需要重新运行 setup.py install
。
而使用 setup.py develop
则是以“开发模式”安装你的包,这意味着它只是创建了一个链接(一个 eggs)指向你“本地”的包文件。所以对库的“本地”文件的任何更改都会被检测到(因为它只是一个链接)。
希望这能帮到你 :)