在没有警告的情况下使用星号导入在spyder IDE中导入辅助文件

时间:2019-04-18 21:14:12

标签: python spyder

因为主文件太长了,所以我决定将代码分成两个文件,一个文件包含所有函数(在这里称为common_functions.py),另一个文件包含类和方法,后者则导入前一个。问题是,我想使用

导入这些功能
from common_functions import *

因为我不需要内部函数的前缀,因为它们很多。另外,尽管并不重要,但这使我不必重复在类文件中导入包。问题是,尽管代码正常执行,但spyder无法识别导入文件的内部,从而在各处显示警告,如下所示。

Screenshot

所以我的问题是,有没有一种方法可以通过解释spyder如何获取common_functions.py的程序包和函数,或以其他方式组织代码来消除这些警告?

1 个答案:

答案 0 :(得分:2)

Spyder在后台使用pyflakes在编辑器窗格中进行实时代码分析。 Pyflakes没有能力解释通配符导入语句(即,它不会检索通配符导入实际导入的所有名称)。因此,有关您得到的未定义名称的警告消息。

我建议避免在代码文件中完全导入通配符。尽管通配符导入是有效的python代码,但在大多数情况下,通配符被广泛认为是不好的做法(有关详细说明,请参见herehere)。如果您将from common_functions import *替换为import common_functions as cf,则必须使用的前缀长度最小。