VScode中的星座上的pylint错误不正确(?)

时间:2018-04-15 21:25:32

标签: visual-studio-code pylint astropy

我使用astropy的单位和EartLocation设置我的天文台位置。硬编码现在。

然而,当我在VScode中运行代码时,pylint会让我感到错误,而我在PyCharm和IDLE中运行它时代码运行正常。

代码:

obsy_location = EarthLocation(lat=52.91044*units.deg, lon=5.242664*units.deg, height=0*units.m)

Pylint在这一行代码中打了3个错误:

  

E1101:模块' astropy.units'没有' deg'会员;也许' dex'?

     

E1101:模块' astropy.units'没有' m'会员;也许' g'

     

E1101:模块' astropy.units'没有'小时'构件

请注意,我是初学者,但由于PyCharm和IDLE在运行此行时似乎都没有任何问题,我想知道VScode的pylint在这里做了什么。有人可以开导我吗?

我使用最新的Anaconda解释器运行VScode。

2 个答案:

答案 0 :(得分:1)

像pylint或PyCharm这样的工具可以进行静态代码分析。它们通常可以很好地处理大多数Python代码,但是在使用Python的动态特性的情况下它们会失败。

在这种情况下,astropy.units在导入时执行Python代码以生成单位对象,如deg(表示单位" degree")或m(代表单位) "米&#34)。从这个意义上说,你看到的是#34; astropy.units没有成员的预期和正常。警告,因为静态分析工具不执行导入,因此这些事情在他们的分析中不存在。我从PyCharm看到了相同的警告(它有自己的静态分析,不像你的情况那样在后台执行PyLint)。

现在始终可以配置静态分析工具来忽略某些类的警告。看https://stackoverflow.com/a/39500741/498873,我希望这个VS Code配置设置可以解决问题(但没有尝试):

"python.linting.pylintArgs": [
    "--extension-pkg-whitelist=astropy.units"
]

答案 1 :(得分:1)

晚了参加聚会,但这在我尝试解决问题时出现了。将其添加到我的设置中对我来说可以关闭该pylint警告:

"python.linting.pylintArgs": [
    "--ignored-classes=astropy.units"
]