Автозаполнение в PyCharm для скомпилированных расширений Python
При написании кода Python с использованием скомпилированных расширений (например, привязки OpenCV Python) PyCharm, похоже, не знает об их доступности. Импорт отмечен серым подчеркиванием, говоря "нерешённая ссылка" в качестве всплывающей подсказки, и автозаполнение тоже не работает. (За исключением имен функций, уже используемых в коде.)
Это не вызвано неправильными путями модулей, при запуске код запускается без ошибок. Кроме того, после того, как я импортирую модули в оболочку Python, автозаполнение начнет работать как ожидалось.
Есть ли решение для этого или это архитектурное ограничение для скомпилированных расширений? Есть ли другие IDE, которые справляются с этой проблемой?
Ответы
Ответ 1
Импорт отмечен серым подчеркиванием, говоря "неразрешенная ссылка" в качестве подсказки
Это, скорее всего, означает, что PyCharm не видит модуль, который вы импортируете. В режиме редактирования PyCharm полагается на доступность источников Python импортированных модулей. Если модуль не написан на Python, а является модулем расширения C, PyCharm генерирует "скелет", который содержит прототипы функций и использует его для завершения.
В режиме оболочки PyCharm использует живые импортированные объекты для завершения, с немного разными результатами.
Убедитесь, что ваша установка OpenCV видна для интерпретатора Python, который вы выбрали для проекта (File/Settings/Python interpreter). Если интерпретатор верен, попробуйте удалить и повторно добавить его (это отнимает много времени, извините).
Если ничего не помогает, введите ошибку.
Ответ 2
В настоящее время PyCharm не сканирует скомпилированные расширения/двоичные файлы, которые находятся в пути, добавленном вручную в интерпретатор в среде IDE. Я подал ошибку с Jetbrains в YouTrack. Возможно, вам захочется взглянуть на него и, возможно, на обсуждение, которое я начал на своем дискуссионном форуме (ссылка находится в описании ошибки). Я был бы признателен, если бы вы могли проголосовать за эту проблему, которая будет решена в YouTrack, если вы являетесь пользователем PyCharm, сталкивающимся с той же проблемой.
Ответ 3
Попробуйте нажать кнопку "Обновить" в файле | Настройки | Настройки IDE | Python переводчики. Это заставило меня работать для меня.
Ответ 4
В моем случае на OS X 10.8 и PyCharm 3, IDE автоматически выбирала различные установки Python. Я заметил это в Eclipse Pydev, который поднял один правый и работал, как ожидалось. Было нелегко заметить разницу между ними:
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python
Ответ 5
Я следую инструкциям по этому вопросу:
Как установить OpenCV в Windows и включить его для PyCharm без использования диспетчера пакетов
После этого он не работает, и я переустанавливаю pycharm ide без каких-либо других изменений, и теперь он работает отлично.
Я знаю, что это не лучший ответ, но после того, как вы потратили много времени и попробовали разные обходные пути, я решил, что это может помочь вам.
Ответ 6
Я заметил разницу в поведении pycharm в зависимости от способа импорта. с помощью:
import cv2
автоматическое завершение не работает,
пока с:
from cv2 import cv2
Авто завершение работ
Ответ 7
Мне не нравится давать ответ "работает для меня", но, может быть, детали в моей среде помогут вам определить проблему на вашем конце.
Я никогда раньше не использовал PyCharm, но я просто сделал тест на Mac 10.6.6, используя PyCharm 1.1.1, с Macports opencv + python26. Автозаполнение работало отлично для меня в первый раз. Я также закрыл и перезапустил PyCharm и смог автозаполнять, ничего не делая. У меня также не было проблем с автозаполнением для других родных расширений, которые я пробовал как cjson, procname.
.
Возможно, это проблема с платформой (Windows?) или ошибка, связанная с более старой версией PyCharm?