Невозможно импортировать opencv, кроме как в каталог сайтов-пакетов с python3

avatar
miracle-doh
8 апреля 2018 в 03:19
1434
1
2

Я следую курсу lynda openCV по Python и его руководству по установке opencv, но застрял на импорте файла cv2.

Я использовал pip3 install opencv-python для установки cv2. Я могу только импортировать cv2, когда мой текущий каталог /usr/local/lib/python3.6/site-packages . Где-нибудь еще дал бы мне

  Traceback (most recent call last): 
       File "<stdin>", line 1, in <module>
     ModuleNotFoundError: No module named 'cv2'

Следующие версии моей системы:

Python 3.6.0
macOS High Sierra 10.13.2
Opencv version '3.4.0'

Вот __init__.py, найденный в /usr/local/lib/python3.6/site-packages/cv2, хотя не уверен, какое это имеет значение

import importlib
import os

from .cv2 import *
from .data import *

# wildcard import above does not import "private" variables like __version__
# this makes them available
globals().update(importlib.import_module('cv2.cv2').__dict__)

ОБНОВЛЕНИЕ

Я добавил этот код, и кажется, что он работает из любого каталога, но вопрос в том, зачем мне это делать? Я могу просто импортировать numpy из любого места... странно

import sys
sys.path.append('/usr/local/lib/python3.6/site-packages')
Источник

Ответы (1)

avatar
Reine_Ran_
20 марта 2020 в 09:29
3

Это из-за вашего скомпилированного файла библиотеки cv2.so. Если вы заглянете в свою папку /usr/local/lib/python3.6/site-packages/cv2/python-3.6 (или для некоторых пользователей внутри /usr/local/python/cv2/python-3.6), вам следует см. файл cv2.cpython-36m-darwin.so примерно так:

(cv) fangran@Fangs-MacBook-Pro ~ % ls /usr/local/lib/python3.6/site-packages/cv2/python-3.6
cv2.cpython-36m-darwin.so

Теперь вам нужно перейти в этот каталог и переименовать его в cv2.so (так проще)

(cv) fangran@Fangs-MacBook-Pro ~ % cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6

(cv) fangran@Fangs-MacBook-Pro python-3.6 % sudo mv cv2.cpython-36m-darwin.so cv2.so

Если вы находитесь в виртуальной среде (что рекомендуется), обязательно зайдите в пакеты сайта этой среды и сделайте символическую ссылку:

(cv) fangran@Fangs-MacBook-Pro site-packages % cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
(cv) fangran@Fangs-MacBook-Pro site-packages % ln -s /usr/local/python/cv2/python-3.6/cv2.so cv2.so

или, если нет, просто убедитесь, что любая среда, в которой вы находитесь, может получить доступ к файлу cv2.so.