Подтвердить что ты не робот

Почему PyCharm дает нерешенные справочные ошибки в отношении некоторых импортных операций Numpy?

Следующая строка в PyCharm помечена инспекцией "на лету" с нерешенными ссылочными ошибками для каждого импорта. (Они подчеркнуты красным.)

from numpy import tan, arcsin, arccos, arctan

Однако следующий импорт не вызывает ошибок/предупреждений:

from numpy import sin, cos, arctan2, sqrt, cross, pi

Код, в котором я использую эти импорт, отлично работает без каких-либо ошибок или предупреждений. Обычно я полагаюсь на красные ошибки PyCharm как предупреждение о том, что мой код сломан и не будет работать, но в этом случае PyCharm ошибается.

Почему некоторые из numpy-функций распознаются с помощью PyCharm-интроспекции, а другие нет?

Текущие версии:

  • 64-разрядная версия Windows 7
  • Python 2.7.5
  • PyCharm 3.1.2
  • Numpy 1.8

Спасибо!

4b9b3361

Ответ 1

Причина, по которой вы получаете это, - это статический анализ PyCharm. Теперь, что делает Python, это использование статических скелетов (некоторые из них предварительно сгенерированы и некоторые генерируются), чтобы дать вам анализ. Взгляните на предварительно сгенерированные скелеты здесь → https://github.com/JetBrains/python-skeletons

Это можно решить, включив следующее:

enter image description here

Однако, если это не работает:

enter image description here

который блокирует ошибку, он появится в виде комментария над строкой.

Ответ 2

Конфигурация Python указана (как минимум) в двух местах: Run | Edit Configurations | Python | Python Interpreter Run | Edit Configurations | Python | Python Interpreter Run | Edit Configurations | Python | Python Interpreter и File | Settings | Project | Project Interpreter File | Settings | Project | Project Interpreter File | Settings | Project | Project Interpreter. Моя ошибка была в том, что я не установил правильную установку Python в File | Settings... File | Settings... Следовательно, он имел в виду конфигурацию Python, в которой не был установлен импорт (например, NumPy).

После того, как я установил эти два местоположения, чтобы они указывали на одну и ту же правильную установку Python, я сделал File | Invalidate Caches/Restart File | Invalidate Caches/Restart, тогда все было хорошо.

Третье место, чтобы проверить это File | Default Settings... | Project Interpreter File | Default Settings... | Project Interpreter File | Default Settings... | Project Interpreter и убедитесь, что он соответствует другим настройкам.

Ответ 3

Ниже часто помогает решить ложноположительные нерешенные ссылки

File | Invalidate Caches

Ответ 4

Разработчик PyCharm опубликовал обходной путь для одной из возможных причин неудачи проверки:

https://youtrack.jetbrains.com/issue/PY-32029

Суть этого - проверка может не пройти, если у вас есть папка venv каталоге проекта. Щелкните правой кнопкой мыши, отметьте каталог как исключенный.

Ответ 5

Вы можете отключить проверки для определенных библиотек (например, numpy). Я нашел это очень полезным, так как моя полоса прокрутки постоянно горела из-за этой проблемы. Перейдите в Настройки → Редактор → Инспекции → Python → Неразрешенные ссылки (внизу) и перейдите в раздел Игнорировать ссылки в правом нижнем углу окна.

Добавьте запись с "numpy. *" Без кавычек, и вы больше не увидите этих неразрешенных ссылок в numpy, освещающих вашу полосу прокрутки!

Ответ 6

Я смог решить проблему, просто используя virtualenv вместо системного интерпретатора. Ни один из других методов, которые я нашел где-либо, не работал для меня раньше.

Я использую Windows 7, PyCharm Community Edition 2018.2.4, Python 3.6.7, Numpy 1.15.4

  1. Создайте новый проект с именем my_project и настройте его на использование системного интерпретатора. File → Settings → Project: my_project → Project Interpreter → Select your project → Select the system interpreter
  2. Создайте следующий тестовый скрипт script1.py внутри проекта:

    import numpy as np
    print(np.tan(8))
    

    Теперь запуск этого сценария работает нормально и печатает некоторое число, но Pycharm выдает предупреждение о неразрешенной ссылке и Ctrl->Click на tan не приводит к пустому коду, как должно.

  3. Вручную создайте виртуальную среду

    $cd dir/to/my_project
    $virtualenv venv
    $venv\Scripts\activate
    (venv) $pip install numpy
    (venv) $deactivate
    

    В Linux замените строку активации source venv/bin/activate

  4. Скажите PyCharm использовать виртуальную среду: File → Settings → Project: my_project → Project Interpreter → Select your project → Select Python 3.6 (my_project) котором должен быть файл python.exe в папке вашего проекта где-то в папке venv,
  5. Теперь File → Invalide Caches/Restart... → Invalidate and restart
  6. Дождитесь завершения индексации и проверьте, можете ли вы Ctrl->Click на tan в вашем script1.py

Таким образом, я смог исправить ту же проблему для других пакетов, таких как torch и opencv (просто создавая виртуальную среду со всеми необходимыми мне пакетами). Нет больше неразрешенных ссылок до сих пор.

Не знаю, почему это будет работать так, но не будет работать с системным интерпретатором.