OpenCV построен из исходного кода: Pycharm не получает информацию о автозаполнении - PullRequest
1 голос
/ 13 апреля 2020

Я пытаюсь установить OpenCV в мою python среду (Windows), и я почти весь путь, но все еще возникают некоторые проблемы с автозаполнением и самим Pycharm, импортирующими библиотеку. Я прошел через бесчисленное множество других связанных тем, но кажется, что большинство из них либо устарели, для готовых версий, либо остаются без ответа.

Я использую Anaconda и имею несколько сред, и, к сожалению, устанавливаю их через pip install opencv-contrib-python не включает в себя все, что мне нужно. Итак, я построил его из исходного кода, и сама библиотека, кажется, работает нормально. Процесс сборки установил некоторые вещи в ./Anaconda3/envs/cv/Lib/site-packages/cv2/: __init__.py, некоторые файлы конфигурации py и .../cv2/python-3.8/cv2.cp38-win_amd64.pyd. Я не уверен, что он сделал что-то еще.

Но вот где я нахожусь:

  • В отдельной среде pip install opencv-contrib-python и работает, и работает автозаполнение
  • В этой среде OpenCV на самом деле работает просто отлично, но автозаполнение не работает, и Pycharm жалуется на все, например: Cannot find reference 'imread' in '__init__.py'
  • Недействительные кэши / перезапуск не помогают
  • Удаление и повторное добавление среды не помогает
  • Удаление папки пользовательских настроек для Pycharm не помогает
  • Пересборка / установка OpenCV не помогает
  • Файл-> Настройки-> Проект-> Project Interpreter установлен правильно
  • Выполнить-> Редактировать конфигурацию -> Python Переводчик настроен правильно

Итак, мой вопрос: как Pycharm получает или генерирует эту автозаполненную информацию? Похоже, что файл pyd - это просто замаскированная dll, и, просматривая папку site-packages / cv2 в другой среде, я не вижу ничего интересного. Я читал, что __init__.py как-то связан с этим, но опять-таки версия pip ничего не содержит (кроме from .cv2 import *, но я не уверен, как это учитывается). Файл .whl, который вы можете загрузить, представляет собой zip-файл, который содержит только то, что получает «pip install».

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

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Или добавьте каталог, содержащий файл .pyd, к путям интерпретатора.

У меня была именно эта проблема с OpenCV 4.2.0, скомпилированным из исходников, установленным в моей среде Conda и PyCharm 2020.1.

Я решил следующим образом:

  1. Выберите переводчик проекта
  2. Нажмите кнопку настройки рядом с ним и затем нажмите Показать пути для выбранного переводчика
  3. , добавив каталог, содержащий библиотеку cv2 (в моем случае это путь к библиотеке Conda Python - например, miniconda3 / lib / python3 .7 / site-packages / cv2 / python -3.7). В общем, проверьте каталог site-packages / cv2 / python -XX)
1 голос
/ 13 апреля 2020

Понял наконец! Цифры, которые могут произойти сразу после публикации вопроса ...

Получается, что .../envs/cv/site-packages/cv2/python-3.8/cv2.cp38-win_amd64.pyd необходимо скопировать в .../envs/cv/DLLs/. Тогда PyCharm сделал магию c и теперь все хорошо.

...