Python получает IDE linter, чтобы видеть из импорта системы в clr pythonnet - PullRequest
2 голосов
/ 29 октября 2019

Я использую пакет pythonnet в сообщениях MSMQ. В моей 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.

What I Am Seeing

  • Для System написано: Unresolved reference 'System'

Кроме использования noqa комментариев, как я могу заставить мой PyCharm подкладывать следующие 10 * *:

  • Не жаловаться на from System import XYZ?

Информация о версиях

  • IDE: PyCharm Community Edition 2019.2
  • pythonnet 2.3.0, установленная в виртуальной среде

1 Ответ

3 голосов
/ 06 ноября 2019

Это мой полный ответ, согласно нашим обменам.

Выпуск # 1

Нет модуля с именем clr

После некоторых проверок онПохоже, что между средой операционной системы и виртуальной средой вашего проекта была какая-то смесь.

Решение: удалите и заново создайте виртуальную среду, исправьте ее


Проблема № 2

Неразрешенная ссылка 'Система'

В этом случае, когда соответствующие модули загружаются динамически, лучшим решением будет отключение Инспектора PyCharm в этих конкретных строках;таким образом, вы не потеряете больше ничего в своей IDE.

Вы можете увидеть Как отключить проверку .

В моей песочнице мне просто нужно было:

  • перейти к соответствующим строкам исходного кода с предупреждением (одна за другой)
  • использовать контекстное меню More actions для ошибки (в данном случае System)
  • используйте подменю Ignore unresolved reference 'pythonnet_tests.System'
  • наконец используйте Suppress for statement

Каждый раз, когда соответствующей строке исходного кода будет предшествовать строка комментария:

# noinspection PyUnresolvedReferences

И все!

...