PyCharm показує помилку невирішених посилань на дійсний код


279

Я використовую PyCharm для роботи над проектом. Проект відкривається та налаштовується за допомогою перекладача і може успішно працювати. Шлях віддаленого перекладача відображається належним чином. Це здається правильною конфігурацією, але PyCharm виділяє мій дійсний код помилками "невирішеної посилання", навіть для вбудованих функцій Python. Чому вони, схоже, не виявляються, хоча код працює? Чи є спосіб змусити PyCharm розпізнати їх правильно?


Цей конкретний приклад проблеми пов'язаний з віддаленим перекладачем, але проблема з’являється і на місцевих перекладачах.


Я маю ту саму проблему і вирішував її. Ось рішення .
Макс

Відповіді:


445

Файл | Недійсні кеші ... і перезапуск PyCharm допомагає.


3
Це єдиний спосіб роботи з PyCharm 4.0.x в моєму випадку. Справа в тому, що якщо щось накрутилося, і воно не оновиться (іноді він навіть показує той самий перекладач, повторений кілька разів у списку), вам доведеться видалити файли вручну ... Мені навіть довелося один раз видалити папки .idea .
danius

10
Це така важка вага. Чи немає можливості повернути стару опцію "шлях оновлення" в PyCharm 4.5?
Кріс Вітерс

6
Це дійсно прикро, що така IDE не піклується про таку просту операцію.
Едуардо Піньятеллі

3
Це працює на мить. Через кілька хвилин я отримую таке ж попередження знову
Асім

Прийнята відповідь є важкою вагою і, швидше за все, не вирішує суть проблеми. Ось інформація прямо з уст коней: JetBrains - PyCharm Content Root "PyCharm використовує коріння джерела як вихідну точку для вирішення імпорту". У мене виникло питання саме так, як у назві, оскільки в деяких проектах мені потрібно використовувати файл файлів, де джерела знаходяться в підпапках, PyCharm потім плутають імпорт. Вбивство кешу може допомогти на мить, але це не правильний підхід. Позначте каталог джерел як корінь, і все добре.
predmod

133

Відповідь Дмитра для мене не спрацювала.

Я працював, перейшовши до Інтерпретаторів проекту, вибравши вкладку "Шляхи" та натиснувши кнопку оновлення у цьому підменю. Він автоматично заповнюється тим, що називається "скелетами пітона".

редагувати : скріншот із використанням PyCharm 3.4.1 (він досить добре прихований)

введіть тут опис зображення


6
Де «Перекладачі Python». Ви маєте на увазі "Інтерпретатори проекту"? Я використовую Linux, і я не зміг знайти вкладку Шляхи.
Баська

1
У PyCharm 3.4 на OSX це значок, схожий на маленьке дерево папок, і не говорить "Шляхи".
Даніель Бушман

12
Для всіх, хто все ще плутається (в PyCharm 3.4.1):Settings > Project Settings > Project Interpreter > Project Interpreters (gear button > more) > --Select the interpreter-- > Interpreter Paths (Directory Tree button on the right) > Reload List of Paths (Blue refresh-like button)
raphaeltm

5
У PyCharm 4 такої кнопки оновлення немає, лише знаки плюс і мінус.
dtheodor

3
@Sarah У PyCharm 4.0.4 у вікні "Шляхи перекладача" у мене немає кнопки "Перезавантажити список шляхів" (нижній синій значок оновлення). Також у списку я не бачу жодних шляхів, а кнопки плюс і мінус вимкнено.
Генрік Хаймбургер

70

Для цього існує багато рішень, деякі зручніші, ніж інші, і вони не завжди працюють.

Ось усе, що ви можете спробувати, переходячи від "швидкого" до "дратівливого":

  • Зробіть 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
  • Перейдіть до іншого перекладача, а потім знову до потрібного.
  • Створіть нове віртуальне середовище та перейдіть до інтерпретатора цього середовища.
  • Перейдіть на інший перекладач взагалі, не перемикайтесь назад.

У мене виникає ця проблема так довго, як я використовую PyCharm, і вони все ще не можуть надійно її виправити. Добре, що ви так чи інакше висвітлювали більшу частину роботи, і закінчуєте вирішення проблеми. Смішно, як час від часу повертаюся до цієї відповіді, щоб зрозуміти, яку роботу я забув спробувати.
Алекс

3
Я працював над цим списком і, видаляючи / повторно додаючи перекладач, працював на мене. Дякую!
Марк

16

У моєму випадку це була структура каталогів. Мій проект виглядає приблизно так:

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

Тому клацніть правою кнопкою миші на dir_b> "позначити каталог як"> "корінь проекту"


2
Питання полягало не в тому, що PyCharm не розпізнає код проекту . Він не розпізнає стандартні вбудовані методи Python.
florisla

Вирішено мою проблему на PyCharm 2019.3.3 на MacOS
samisnotinsane

11

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

Я використовую бродягу, і кожен раз і деякий час, якщо я додаю новий VM до моїх налаштувань multi-vm, переадресований порт змінюється, і це, здається, бентежить PyCharm, коли він намагається використовувати неправильний порт для SSH. Зміна порту, здається, не допомагає зламаним посиланням.


10

Якщо жодне з інших рішень не працює для вас, спробуйте (створити резервну копію) та видаліть папку ~ / .PyCharm40, після чого знову відкрийте PyCharm. Це також знищить усі ваші вподобання.

На Mac потрібно видалити ~ / Бібліотека / Кеші / Pycharm40 та ~ / Бібліотека / Налаштування / PyCharm40.

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


10

Тестували з PyCharm 4.0.6 (OSX 10.10.3), виконуючи наступні дії:

  1. Натисніть меню PyCharm.
  2. Виберіть «Інтерпретатор проекту».
  3. Виберіть значок шестірні.
  4. Виберіть кнопку Більше.
  5. Виберіть «Інтерпретатор проекту», в якому ви перебуваєте.
  6. Виберіть кнопку Дерево каталогів.
  7. Виберіть Перезавантажити список шляхів.

Проблема вирішена!


10

дуже легко

ви просто повинні позначити ваш кореневий каталог як: ДЖЕРЕЛА-КОРИНИ (червоний), а ваші програми: ВИКЛЮЧЕНИЙ КОРИНИ (синій),

тоді невирішена посилання зникне.

  • введіть тут опис зображенняякщо ви використовуєте PyChram pro, це зробіть для вас автоматично.

5
У мене є pycharm pro, і це не зробило це для мене, але після того, як я вручну позначив папки правильно, це працювало
Хосе,

Так, це правильна відповідь, а не якийсь ядерний варіант, коли побічний ефект допомагає на мить, але не стосується того, як думає інструмент "jetbrains" ("вбити кеш", так ... і коли він буде перебудований? "Вбити його знову ! "). Заголовок, який був саме проблемою в моїх проектах, де корінь проекту не обов'язково є коренем джерела, а імпорт цього не розуміє. Ось інформація прямо з вуст коней jetbrains.com/help/pycharm/content-root.html "PyCharm використовує коріння джерела як вихідну точку для вирішення імпорту"!
predmod

6

Вибачте, що надумаю цього питання, однак я маю важливе оновлення.

Ви також можете повернути свого інтерпретатора проекту на Python 2.7.6, якщо ви використовуєте будь-яку іншу версію, ніж цю. Це працювало для мене на моїй установці Ubuntu PyCharm 4.04 professional після того, як жодна з інших рекомендацій не вирішила мою проблему.


1
Перехід до локального інтерпретатора Python 2, а потім знову до віддаленого інтерпретатора Python 3 виправив це і для мене.
Джеймс Флетчер

Це працює і на PyCharm 5 professional. Жодне з інших рішень на цій посаді не працювало для мене. Я зайшов Settings -> "Project Interpreters", натиснув на шестерню, а потім "More...". Оберіть інтерпретатора пітона за замовчуванням ( /usr/bin/python2.7у моєму випадку), натисніть "Ok"і "Apply". Потім повернувся і вибрав власне віртуаленв, який я хотів використати. "Ok"і "Apply"знову, і це виправлено.
Джош

Аналогічно FileNotFoundError- це лише Python-3. Після того, як я встановив правильний інтерпретатор як у File-Settings-Project-Interpreter, так і Run-Edit-Configurations, одна з цих помилок усунула помилку.
Боб Штейн

3

Ви можете спробувати закрити Pycharm, видалити .ideaпапку зі свого проекту, потім знову запустити Pycharm і відтворити проект. Це працювало для мене, тоді як недійсний кеш не робив.


2

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

Зрештою, я просто повинен був позначити підпапку як джерела корінням у pycharm. Тож моя структура була така

-playground
     -env
     -playground

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

Я просто подумав, що поділюся на випадок, якщо хтось інший зможе ним скористатися.


2

Це також може бути проблемою версії python. Довелося вибрати правильний, щоб він працював. введіть тут опис зображення


2

Якщо ви хочете ігнорувати лише деякі помилки "невирішеної посилання", ви також можете сказати це PyCharm прямо, розмістивши це перед вашим класом / методом / функцією:

# noinspection PyUnresolvedReferences

1

Я закрив усі інші проекти та запустив потрібний проект у відриві в Піхармі. Я створив окремий virtualenv від pycharm і додав до нього всі необхідні модулі, використовуючи pip. Я додав це віртуальне середовище в інтерпретатор проекту. Це вирішило мою проблему.


1

Боже, який кошмар, моє згуртування різних відповідей StackOVerflow:

  1. Перейдіть до локального перекладача /usr/bin/pythonX.X та застосуйте
  2. Перегляньте такі шляхи, як відповідь вище
  3. Знайти скелети шляху. Шахта була (/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. Поверніться до інтерпретатора virt і додайте контур скелетів вручну, якщо він не відображався автоматично.

1

Жодне з перерахованих вище рішень не працювало для мене!
Якщо ви використовуєте віртуальне середовище для свого проекту, не забудьте застосувати python.exeфайл, який знаходиться у вашому каталозі віртуальної середовища як інтерпретатор проекту, (Alt + Ctrl + Shift + S) це вирішило проблему для мене.


1

У моєму випадку помилка перевірки виявляється через дуже специфічний випадок 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.

1

Жодна з відповідей не вирішила моєї проблеми.

Що для мене це було переключенням середовища та поверненням до того самого середовища. File->Settings->Project interpreter

Я використовую кондо-середовища.


1

Працювали для мене зі значно спрощеними діями :


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

Прибуток - Pycharm оновлює скелети і все в порядку.


0

Якщо ви використовуєте vagrantпомилку, це може бути викликано неправильним інтерпретатором python. У нашому vagrantми використовуємо, pyenvтому мені довелося змінити Python Interpreter pathшлях з /usr/bin/pythonна/home/vagrant/.pyenv/versions/vagrant/bin/python введіть тут опис зображення


0

У мене є проект, коли один файл src/імпортує інший файл у той самий каталог. Щоб PyCharm розпізнав, мені довелося перейти до Файл> Налаштування> Проект> Структура проекту> Вибратиsrc папку та натиснути «Позначити як: Джерела»

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

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


0

Моя проблема полягає в тому, що Flask-WTF не вирішено PyCharm . Я спробував перевстановити, а потім встановити або вимкнути кеш і перезапустити PyCharm, але це все ще не працює.

Тоді я придумав це рішення, і воно прекрасно працює для мене.

  1. Open Project Інтерпретатор по Ctrl + Alt + S (Windows) і натисніть кнопку Install (+) новий packgage.

введіть тут опис зображення

  1. Введіть пакет, який PyCharm не вирішив, а потім натисніть кнопку Встановити пакет . Потім натисніть кнопку ОК .

введіть тут опис зображення

Тепер ви побачите, що ваша бібліотека вирішена.


-1

Ви використовуєте virtualenv?

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

Переконайтесь, що Pycharm вказує на правильний інтерпетер та пакети: Файл -> Налаштування -> Проект -> Інтерпретатор проекту. Клацніть на шестірні та виберіть python.exe у папці Сценарії virtualenv

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.