Python。导入一个函数,然后修改它。稍后在同一个python会话中返回error

2024-09-27 07:20:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个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返回这个错误?抱歉问了这么愚蠢的问题


Tags: 函数inpy脚本labels错误linefunctions
1条回答
网友
1楼 · 发布于 2024-09-27 07:20:41

我建议浏览一下how python imports work。一般来说,使用像from module import *这样的glob导入被认为是不好的做法。它不透明,很难利用reload。你知道吗

我建议重写代码以执行以下操作:

import functions

functions.getLabels(...)

然后在更改getLabels或其他内容后,可以从shell运行以下命令:

reload(functions)

这将重新导入您的更改,而无需重新启动python内核。你知道吗

相关问题 更多 >

    热门问题