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

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


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

31 ответ

Решение

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

Ответ Дмитрия не сработал для меня.

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

edit: скриншот с использованием PyCharm 3.4.1 (он довольно хорошо спрятан)

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

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

  • Делать File -> Invalidate Caches / Restart и перезапустите PyCharm.
    • Вы также можете сделать это после любого из следующих методов, просто чтобы быть уверенным.
  • Сначала проверьте, какой интерпретатор вы используете: Run -> Edit Configurations -> Configuration -> Python Interpreter,
  • Обновите пути вашего переводчика:
    • File -> Settings
    • Project: [name] -> Project Interpreter -> "Интерпретатор проекта": значок шестеренки -> More...
    • Нажмите кнопку "Показать пути" (внизу)
    • Нажмите кнопку "Обновить" (внизу)
  • Удалите переводчик и добавьте его снова:
    • File -> Settings
    • Project: [name] -> Project Interpreter -> "Интерпретатор проекта": значок шестеренки -> More...
    • Нажмите кнопку "Удалить"
    • Нажмите кнопку "Добавить" и повторно добавьте свой интерпретатор
  • Удалить настройки вашего проекта
    • Удалить ваш проект .idea папка
    • Закройте и снова откройте PyCharm
    • Откройте свой проект с нуля
  • Удалите свои пользовательские настройки PyCharm (но сначала сделайте их резервную копию).
    • ~/.PyCharm50 на Mac
    • %homepath%/.PyCharm50 в Windows
  • Переключитесь на другого переводчика, затем снова вернитесь к тому, кого вы хотите.
  • Переключитесь на другого переводчика, не переключайтесь обратно.

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

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

Поэтому щелкните правой кнопкой мыши на dir_b > "пометить каталог как" > "root проекта"

Очень просто

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

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

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

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

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

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

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

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

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

  1. Нажмите меню PyCharm.
  2. Выберите переводчика проекта.
  3. Выберите значок шестеренки.
  4. Выберите кнопку Больше.
  5. Выберите переводчика проекта, в котором вы находитесь.
  6. Выберите кнопку дерева каталогов.
  7. Выберите Обновить список путей.

Задача решена!

Работал для меня с гораздо более простым действием:


File > Settings > Project > Project Interpreter 
> Select "No interpreter" in the "Project interpreter" list 
> Apply > Set your python interpreter again > Click Apply

Прибыль - Pycharm обновляет скелеты и все в порядке.

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

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

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

# noinspection PyUnresolvedReferences

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

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

Файл -> Настройки -> Интерпретатор проекта -> Добавить локальный интерпретатор -> Наследовать глобальные пакеты сайта

Ни один из ответов не решил мою проблему.

Для меня это было переключением среды и возвращением к той же среде. File->Settings->Project interpreter

Я использую среду conda.

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

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

-playground
     -env
     -playground

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

Просто подумала, что поделюсь, если кто-то еще сможет это использовать

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

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

В моем случае ошибка проверки появляется из-за очень специфического случая кода 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: схематически S U T V, но не S T U V или T S U V
  • Использование метода вместо функции: S[d].abs() вместо np.abs(S[d])
  • Использование встроенной функции abs ()
  • Добавление числа к выбранному параметру: U[d] + 0.

В PyCharm 2020.1.4 (Community Edition) в Windows 10 10.0. В разделе "Настройки" в PyCharm: "Файл"> "Настройки"> "Структура проекта" я внес два изменения в структуру проекта: основная папка, отмеченная как исходная, и папка odoo со всеми исключенными приложениями. Снимок экрана показывает, что я сделал. После этого я перезапустил PyCharm: File > Invalidate Caches / Restart...

Ошибка неразрешенных ссылок была удалена

Моя проблема в том, что Flask-WTF не разрешается PyCharm. Я попытался переустановить, а затем установить или сделать недействительным кеш и перезапустить PyCharm, но он все еще не работает.

Затем я придумал это решение, и оно отлично работает для меня.

  1. Откройте Project Interpreter, нажав Ctrl+Alt+S (Windows), а затем щелкните Установить (+) новый пакет.

  1. Введите пакет, который не разрешен PyCharm, и нажмите " Установить пакет". Затем нажмите ОК.

Теперь вы увидите, что ваша библиотека была решена.

Invalidating the cache as suggested by other answers did not work for me. What I found to be the problem in my case was that PyCharm was marking init.py files of Python packages as text and thus not including them in the analysis which means python resolving was not working correctly.

The solution for me was to:

Open PyCharm settingsNavigate to Editor -> File Types Find Python and add to the list of python files or

Find Text and delete __init__.py from the list of text files

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

Черт возьми, какой кошмар, мое объединение различных StackOVerflow отвечает:

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

Чтобы добавить еще один: ни одно из решений, связанных с вкладкой интерпретатора Python, не помогло, однако я заметил, что мне нужно установить зависимости проекта: в проекте, который былunresolved referenceошибки, ни одна из зависимостей не была проверена. Как только я их проверил, соответствующие ошибки исчезли. Я не знаю, почему одни проверяются с самого начала, а другие нет.

@kelorek works for me, but before, in interpereter paths I had to add some path.lets say

      from geometry_msgs.msg import Twist

is underline as error, then in remote machine in python run:

      help("geometry_msgs")

at the end there will be path lets say :

      /opt/ros/foxy/lib/python3.8/site-packages/geometry_msgs/__init__.py

so to Your intepreter pycharm path add

      /opt/ros/foxy/lib/python3.8/site-packages

Hope it will help You and it helps me :)

У меня есть проект, в котором один файл в src/импортирует другой файл в тот же каталог. Чтобы PyCharm распознал, мне нужно было перейти в Файл> Настройки> Проект> Структура проекта> выбратьsrc папку и нажмите "Отметить как: Источники"

С https://www.jetbrains.com/help/pycharm/configuring-folders-within-a-content-root.html

Исходные корни содержат фактические исходные файлы и ресурсы. PyCharm использует исходные корни в качестве отправной точки для разрешения импорта

У меня были такие же симптомы. В моем случае источник проблемы заключался в том, что я установил idea.max.intellisense.filesize=50 в настраиваемых свойствах. Я мог бы решить это, установив его на 100.

Справка-> Изменить настраиваемые свойства

Мне пришлось перейти в File-> Invalidate Caches/Restart, перезагрузить Ubuntu 18.04 LTS, затем снова открыть Pycharm и File-> Invalidate Caches/Restart, прежде чем он очистится.

Для меня это помогло: обновите ваш основной каталог "отметьте каталог как" -> "исходный корень"

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

Другие вопросы по тегам