我使用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。
答案 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"
]