我有两个python脚本,一个包含我定义的所有函数(函数.py另一个只运行这些函数(运行_函数.py)。
我使用from functions import*
将函数导入正在运行的\u函数脚本
我的问题是,当我使用execfile('running_functions.py')
在python控制台中运行函数时,一开始效果很好,但是如果我不关闭python会话并对中的一个函数进行一些修改函数.py(例如更改getLabels()
采用的参数数量(从4改为5)),然后保存再次跑步跑步_函数.py使用相同的命令或调用getLabels()
时,得到错误:
使用execfile()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "running_functions.py", line 82, in <module>
predict_labels = getLabels(pred_labels, ids_tr ,labels_tr,filenames_tr, filenames_ts)
TypeError: getLabels() takes exactly 4 arguments (5 given)
调用函数
>>> predict_labels = getLabels(pred_labels, ids_tr ,labels_tr,filenames_tr, filenames_ts)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: getLabels() takes exactly 4 arguments (5 given)
为了让它再次工作,我必须关闭python会话,然后再次运行execfile()
或者重命名functions.py
,或者用修改过的函数编写pythons脚本。你知道吗
这是非常恼人的,因为所有的代码需要大约10或15分钟,我不喜欢有很多小脚本。那么,我怎样才能避免这个错误呢? 我不想每次都关闭会话,也不想在每个函数pickle模块中使用。我导入函数的方式不对吗?为什么python返回这个错误?抱歉问了这么愚蠢的问题
我建议浏览一下how python imports work。一般来说,使用像
from module import *
这样的glob导入被认为是不好的做法。它不透明,很难利用reload
。你知道吗我建议重写代码以执行以下操作:
然后在更改getLabels或其他内容后,可以从shell运行以下命令:
这将重新导入您的更改,而无需重新启动python内核。你知道吗
相关问题 更多 >
编程相关推荐