it-swarm.com.ru

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

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


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

233
James McCalden

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

360
Dmitry Trofimov

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

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

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

enter image description here

117
kelorek

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

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

  • Выполните 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
  • Переключитесь на другого переводчика, затем снова вернитесь к тому, кого вы хотите.
  • Создайте новую виртуальную среду и переключитесь на интерпретатор этой среды.
  • Переключитесь на другого переводчика вообще, не переключайтесь обратно.
50
florisla

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

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

11
Thomas Farvour

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

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

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

11
Shoham

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

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

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

10
siripan

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

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

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

10
Imran

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

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

5
Fairlight Evony

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

3
Jason McVetta

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

2
Shehaaz

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

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

-playground
     -env
     -playground

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

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

2
user2233949

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

1
Ali Sherafat

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

1
Waqar Detho

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

Удаление строки '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.
1
Wannes Goethals

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

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

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

0
Daniil Mashkin

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

# noinspection PyUnresolvedReferences
0
flix