PyCharm无法解析多处 理模块的动态引用

问题描述 投票:4回答:2

这是完全有效的代码:

globals().update({"variable": "val"})
variable
# do-something-with-variable

但是,PyCharm无法识别变量:

enter image description here

我不想禁用未解析引用的标记;这是一个非常有用的功能。我希望PyCharm识别我的变量。我怎样才能做到这一点? (即使它是一个肮脏的开发技巧,我将在生产中删除)

说明

我不关心globals()。更新如果不是因为Python的版本3.4的multiprocessing模块包含通过上下文类动态创建变量而不是在__init__.py文件中定义它们(参见this link)因此,PyCharm不会完全认识模块的属性,所以我必须不断地查找文档,而不是使用PyCharm的内省功能,更不用说没有得到unresolved reference错误让我不断怀疑我是否正确获取代码。基本上就像在Windows'记事本中编写代码;-)

python pycharm
2个回答
3
投票

由于Python是一种动态语言,因此PyCharm无法使用静态推理检查这是否有效。

考虑以下:

globals = lambda: {}

globals().update({'variable': 'val'})

print(variable) # NameError: name 'variable' is not defined

既然你为globals蒙上了阴影,那么这不再是有效的代码而PyCharm也无从知晓。

上述可能是动态语言的缺点:在运行程序之前,您无法知道程序是否有效。


2
投票

您可以在要禁用未解析的参考检查的行上方的行上添加:# noinspection PyUnresolvedReferences

它不会在其他任何地方禁用它(从我在Pycharm 2018.2中看到的)

© www.soinside.com 2019 - 2024. All rights reserved.