PyCharm показывает ошибку неразрешенных ссылок для действительного кода

Я использую PyCharm для работы над проектом. Проект открывается и настраивается с помощью интерпретатора и может успешно работать. Пути удаленных интерпретаторов отображаются правильно. Кажется, это правильная конфигурация, но PyCharm выделяет мой действительный код с ошибками "неразрешенной ссылки", даже для встроенных функций Python. Почему они не обнаруживаются, хотя код работает? Есть ли способ заставить PyCharm правильно их распознать?


Этот конкретный экземпляр проблемы связан с удаленным интерпретатором, но проблема возникает и у локальных интерпретаторов.

Ответ 1

Файл | Invalidate Caches... и перезагрузка PyCharm помогает.

Ответ 2

Ответ Дмитрия не помог мне.

Я получил свою работу, перейдя в Project Interpreters, выбрав вкладку "Paths" и нажав кнопку обновления в этом подменю. Он автоматически заполняется чем-то, называемым "python-skeletons".

изменить: снимок экрана с помощью PyCharm 3.4.1 (он довольно хорошо скрыт)

enter image description here

Ответ 3

Есть много решений для этого, некоторые удобнее, чем другие, и они не всегда работают.

Здесь все, что вы можете попробовать, переходя от "быстрого" к "надоедливому":

  • Сделайте FileInvalidate Caches/Restart и перезапустите PyCharm.
    • Вы также можете сделать это после любого из следующих методов, просто чтобы быть уверенным.
  • Сначала проверьте, какой интерпретатор вы используете: RunEdit ConfigurationsConfigurationPython Interpreter.
  • Обновите пути вашего переводчика:
    • FileSettings
    • Project: [name]Project Interpreter → "Переводчик проекта": значок шестеренки → More...
    • Нажмите кнопку "Показать пути" (внизу)
    • Нажмите кнопку "Обновить" (внизу)
  • Удалите переводчик и добавьте его снова:
    • FileSettings
    • Project: [name]Project Interpreter → "Переводчик проекта": значок шестеренки → More...
    • Нажмите кнопку "Удалить"
    • Нажмите кнопку "Добавить" и повторно добавьте свой интерпретатор
  • Удалить настройки вашего проекта
    • Удалите папку вашего проекта .idea
    • Закройте и снова откройте PyCharm
    • Откройте свой проект с нуля
  • Удалите свои пользовательские настройки PyCharm (но сначала сделайте их резервную копию).
    • ~/.PyCharm50 на Mac
    • %homepath%/.PyCharm50 в Windows
  • Переключитесь на другого переводчика, затем снова вернитесь к тому, кого вы хотите.
  • Создайте новую виртуальную среду и переключитесь на интерпретатор этой среды.
  • Переключитесь на другого переводчика вообще, не переключайтесь обратно.

Ответ 4

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

Я использую бродягу, и каждый раз и некоторое время, если я добавлю новую виртуальную машину в мою настройку multi-vm, перенаправленный порт изменится, и это, похоже, путает PyCharm, когда он пытается использовать неправильный порт для SSH. Изменение порта, похоже, не помогает сломанным ссылкам.

Ответ 5

В моем случае это была структура каталогов. Мой проект выглядит следующим образом:

+---dir_A
    +---dir_B
        +app
        |
        \-run.py

Итак, правой кнопкой мыши на dir_b > "mark directory as" > "root проекта"

Ответ 6

Если ни одно из других решений не работает для вас, попробуйте (резервное копирование) и удалите папку ~/.PyCharm40, а затем снова запустите PyCharm. Это также убьет все ваши предпочтения.

На Mac вы хотите удалить ~/Library/Caches/Pycharm40 и ~/Library/Preferences/PyCharm40.

И в Windows: C:\Users\$USER.PyCharm40.

Ответ 7

Протестировано с помощью PyCharm 4.0.6 (OSX 10.10.3) выполните следующие действия:

  • Выберите меню PyCharm.
  • Выберите "Переводчик проекта".
  • Выберите значок Gear.
  • Кнопка "Выбрать еще".
  • Выберите Project Interpreter, в котором вы находитесь.
  • Выберите кнопку Дерево каталогов.
  • Выберите "Обновить список путей".

Проблема решена!

Ответ 8

Извините, что я столкнулся с этим вопросом, однако у меня есть важное обновление.

Вы также можете вернуть переводчика проекта в Python 2.7.6, если вы используете какую-либо другую версию, чем это. Это работало на моей установке Ubuntu профессионала PyCharm 4.04 после того, как ни одна из других рекомендаций не решила мою проблему.

Ответ 9

Вы можете попытаться закрыть Pycharm, удалив папку .idea из вашего проекта, а затем снова запустив Pycharm и заново создав проект. Это сработало для меня, тогда как недействительный кеш не сделал.

Ответ 10

Наконец-то я получил эту работу после того, как ни один из предлагаемых решений не работал у меня. Я играл с проектом django rest framework и использовал virtualenv, с которым у меня была настройка. Я смог зафиксировать Pycharm, отметив корневую папку как источник root, но тогда сервер django исключил бы исключения исключения. Таким образом, можно было бы работать, когда другой не будет и наоборот.

В конечном счете мне просто нужно было отметить подпапку в качестве корня источников в pycharm. Итак, моя структура была такой

-playground
     -env
     -playground

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

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

Ответ 11

Это также может быть проблема с версией python. Я должен был выбрать правильный, чтобы он работал. введите описание изображения здесь

Ответ 12

Я закрыл все остальные проекты и выполнил свой проект в изоляции в Pycharm. Я создал отдельный virtualenv из pycharm и добавил в него все необходимые модули, используя pip. Я добавил эту виртуальную среду в интерпретатор проекта. Это решило мою проблему.

Ответ 13

Выиграйте, какой кошмар, мое объединение разных ответов StackOVerflow:

  • Переключитесь на локальный интерпретатор /usr/bin/pythonX.X и примените
  • Просмотр таких путей, как приведенный выше ответ
  • Найдите путь скелетов. Шахта была (/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  • Вернитесь к virt интерпретатору и добавьте путь скелета вручную, если он не появился автоматически.

Ответ 14

Ни один из вышеперечисленных решений не работал у меня!
Если вы используете виртуальную среду для своего проекта, не забудьте применить файл python.exe, который находится внутри вашего каталога виртуальной среды, в качестве интерпретатора для проекта (Alt + Ctrl + Shift + S) это решило проблему для меня.

Ответ 15

В моем случае ошибка проверки появляется из-за очень специфического случая кода Python. Функция min, которая содержит две функции numpy и два доступа к списку, позволяет проверке моего кода выдавать подобные ошибки.

Удаление строки 'd = 0' в следующем примере, как и ожидалось, приводит к неразрешенной ошибке ссылки, но чтение не устраняет ошибку для инспектора кода. Я все еще могу выполнить код без проблем после этого.

import numpy as np
def strange(S, T, U, V):
    d = 0
    print min(np.abs(S[d]), np.abs(T[d]), U[d], V[d])

Очистка кешей и перезагрузка списка путей не работает. Работает только изменение кода с одним из следующих примеров исправлений:

  • Другой порядок параметров min: схематически SUTV, но не STUV или TSUV
  • Использование метода вместо функции: S [d].abs() вместо np.abs(S [d])
  • Использование встроенной функции abs()
  • Добавление числа к выбранному параметру: U [d] + 0.

Ответ 16

Если вы хотите игнорировать только некоторые ошибки "неразрешенной ссылки", вы также можете явно указать это PyCharm, поместив это перед вашим классом/методом/функцией:

# noinspection PyUnresolvedReferences

Ответ 17

Если вы используете vagrant ошибка может быть вызвана неправильным интерпретатором Python. В нашей vagrant мы используем pyenv, так что я должен был изменить Python Interpreter path путь из /usr/bin/python в /home/vagrant/.pyenv/versions/vagrant/bin/python enter image description here

Ответ 18

очень просто

вам просто нужно пометить ваш корневой каталог как: SOURCE ROOT (красный), а ваши приложения: EXCLUDED ROOT (синий),

тогда неразрешенная ссылка исчезнет.

  • enter image description here если вы используете PyChram pro, то сделайте это автоматически.

Ответ 19

Вы используете virtualenv?

если это так, вам нужно уведомлять PyCharm о каждом изменении местоположения нужного python.exe (просто./activate недостаточно для PyCharm)

Убедитесь, что Pycharm указывает на правильный интерпретатор и пакеты: Файл → Настройки → Проект → Интерпретатор проекта. Нажмите на шестерню и выберите python.exe в папке сценариев virtualenv.

enter image description here