我在 MSMQ 通信中使用 pythonnet
包。在我的 IDE (PyCharm CE) 中,我有以下示例代码:
#!/usr/bin/env python3
import pythoncom
import clr
clr.AddReference("System")
clr.AddReference("System.Messaging")
from System import TimeSpan
from System.Messaging import MessageQueue
旁白:当我使用 Python 3.6
实际运行这段代码时,它运行良好。
下面是 PyCharm 内部的截图。
- 对于
System
它说:Unresolved reference 'System'
除了使用 noqa
注释,我怎样才能让我的 PyCharm linting 执行以下操作:
- 不提示
from System import XYZ
?
版本信息
- IDE:PyCharm 社区版
2019.2
- pythonnet
2.3.0
,安装在虚拟环境中
最佳答案
根据我们的交流,这是我的完整答案。
问题#1
No module named clr
经过一些检查,操作系统环境和项目的虚拟环境之间似乎存在某种混合。
解决方案:删除并重新创建正确的虚拟环境修复它
问题 #2
Unresolved reference 'System'
在动态加载相应模块的情况下,最好的解决方案是在这些特定行上禁用 PyCharm 的检查器;因此,您不会在 IDE 中丢失任何其他内容。
可以看到How to disable inspection .
在我的沙盒中,我只需要:
- 继续执行带有警告的相应源代码行(一个接一个)
- 对错误使用
更多操作
上下文菜单(在本例中为System
) - 使用
Ignore unresolved reference 'pythonnet_tests.System'
子菜单 - 最后使用
Suppress for 语句
每次对应的源代码行,前面都会有注释行:
# noinspection PyUnresolvedReferences
就是这样!
关于Python 获取 IDE linter 以从 pythonnet 的 clr 中的系统导入中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58598366/