我正在使用astropy的单位和EartLocation来设置我的天文台位置。现在硬编码了。
但是,当我在VScode中运行代码时,pylint会让我陷入错误,而当我在PyCharm和空闲中运行它时,代码就会运行得很好。
代码:
obsy_location = EarthLocation(lat=52.91044*units.deg, lon=5.242664*units.deg, height=0*units.m)Pylint在这一行代码中给了我3个错误:
E 1101:模块'astropy.units‘没有'deg’成员,也许'dex'? E 1101:模块'astropy.units‘没有'm’成员,也许'g'? E 1101:模块“astropy.units”没有“小时”成员
请注意,我是个新手,但是由于PyCharm和空闲似乎都没有任何问题来运行这一行,所以我想知道VScode的pylint在这里做什么。有人能启发我吗?
我使用最新的Anaconda解释器运行VScode。
发布于 2018-04-30 11:42:27
像pylint或PyCharm这样的工具可以进行静态代码分析。在大多数Python代码中,它们通常做得很好,但是在使用Python的动态特性的情况下,它们失败了。
在本例中,astropy.units在导入时执行Python代码来生成单元对象,如deg (表示单元“度数”)或m (表示单元“度量衡”)。从这个意义上说,看到"astropy.units没有成员deg“警告是正常的,因为静态分析工具没有执行导入,因此它们的分析中不存在这些东西。我看到了来自PyCharm的相同警告(它有自己的静态分析,在后台不像在您的例子中那样执行PyLint )。
现在总是可以配置静态分析工具来忽略某些类的警告。看看https://stackoverflow.com/a/39500741/498873,我希望这个VS代码配置设置能做到这一点(但没有尝试):
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=astropy.units"
]发布于 2018-06-21 00:38:43
晚会晚了,但这件事是在我试图解决问题的时候出现的。将此添加到我的设置中,可以使我关闭该pylint警告:
"python.linting.pylintArgs": [
"--ignored-classes=astropy.units"
]https://stackoverflow.com/questions/49846940
复制相似问题