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