【发布时间】:2015-08-28 10:39:17
【问题描述】:
尝试自写模块时,最初几次很可能以错误告终。
但是在修复这些错误时,ipython 似乎并没有注意到这一点。
是否有重新加载新模块的 ipython 命令? 'clear' 并不能解决问题。到目前为止,唯一有效的方法是“退出”并开始一个新会话。但这也意味着重做我迄今为止所做的一切。
或者我是否需要在模块中添加一些东西,它会在运行后杀死它的所有内部变量?
示例:
from mymodule import readCSVts
import pandas as pd
data = readCSVts('file.csv')
TypeError Traceback (most recent call last)
<ipython-input-158-8f82f1a78260> in <module>()
----> 1 data = readCSVts('file.csv')
/home/me/path/to/mymodule.py in readCSVts(filename)
194 Cons_NaNs=hydroTS[(hydroTS.level.isnull())&(hydroTS.level.shift().isnull())&(hydroTS.level.shift(periods=2).isnull())]
195 #This is a pandas dataframe containing all rows with NaN
196 Cons_NaNs_count = len(Cons_NaNs)
197 Cons_NaNs_str = str(Cons_NaNs_count)
198 Cons_NaN_Name_joiner = [current_csv,';',Cons_NaNs]
--> 199 Cons_NaN_Name_str = ''.join(Cons_NaN_Name_joiner)
TypeError: sequence item 2: expected string, DataFrame found
好的,这很容易。我在第 198 行打错字,写了Cons_NaNs 而不是Cons_NaNs_str,因此我在尝试用字符串连接数据帧时遇到明显错误。
但在mymodule.py 文件中修复它后,我收到以下(缩短的)错误:
197 Cons_NaNs_str = str(Cons_NaNs_count)
198 Cons_NaN_Name_joiner = [current_csv,';',Cons_NaNs_str]
--> 199 Cons_NaN_Name_str = ''.join(Cons_NaN_Name_joiner)
TypeError: sequence item 2: expected string, DataFrame found
查看回溯,ipython 很清楚源文件中的更改,它表明我修复了缺少_str 的错字,但它仍然给出错误,乍一看似乎不可能。运行clear 并重新导入所有内容后,它显示相同的行为。
所以为了确保我没有在某个地方犯下愚蠢的错误,我在 ipython 中一步一步地浏览了我的整个模块。引导我到达这一点的每个变量都按预期运行。
Cons_NaNs 是一个数据帧,Cons_NaNs_count 是一个整数,Cons_NaNs_str 是一个字符串。
所以我退出了 ipython,重新启动它并重新导入所有内容,现在它可以工作了。
但是不得不退出 ipython 很糟糕。大多数情况下,这意味着必须重新导入几十个东西并执行几十个命令,才能真正测试我目前正在做的事情。
【问题讨论】:
-
你试过
reload吗?