使用python3

时间:2018-04-08 03:19:48

标签: python-3.x opencv

我正在关注lynda openCV python课程及其opencv安装指南,但却坚持导入cv2。

我使用pip3 install opencv-python安装cv2。 当我的当前目录为/usr/local/lib/python3.6/site-packages时,我导入cv2。其他任何地方都会给我

  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 个答案:

答案 0 :(得分: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

现在,您要做的是将CD插入该目录并将其重命名为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文件。

相关问题