带有两种主要python(3.7和3.8)的Opencv配置

带有两种主要python(3.7和3.8)的Opencv配置,python,opencv,pipenv,Python,Opencv,Pipenv,一段时间以来,我一直在使用opencv(4.5.2源代码编译)和Python3.8.5(在Ubuntu18.04上),但对于某些项目,我确实需要使用tensorflow,它不适用于我的python版本。所以我安装了python3.7(从源代码),当启动我的pipenv shell时,一切似乎都正常,我可以使用python3.7 但在尝试导入cv2时,我遇到了以下错误: ImportError:OpenCV加载程序:缺少配置文件: ['config-3.7.py','config-3.py'] 因

一段时间以来,我一直在使用opencv(4.5.2源代码编译)和Python3.8.5(在Ubuntu18.04上),但对于某些项目,我确实需要使用tensorflow,它不适用于我的python版本。所以我安装了python3.7(从源代码),当启动我的pipenv shell时,一切似乎都正常,我可以使用python3.7

但在尝试导入cv2时,我遇到了以下错误:

ImportError:OpenCV加载程序:缺少配置文件: ['config-3.7.py','config-3.py']

因此,我认为我应该针对我的特定Python 3.7重新编译OpenCV,但我也想让它与我以前的Python 3.8一起工作。针对这两个版本,我如何实现这一点

谢谢你抽出时间


Antoine

最终,我成功地使用从源代码构建的opencv为python3.7和3.8创建了配置文件,并执行了以下操作:

我第一次编译OpenCv时没有为Python编写任何参数。因此,默认情况下,它检测到我的Python3.8并创建config-3.8.py文件

然后,我用以下参数重新编译了针对Python 3.7的OpenCv:

cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-master/modules ../opencv-master -D PYTHON3_EXECUTABLE='/usr/local/bin/python3.7m' \
-D PYTHON_INCLUDE_DIR='/usr/local/include/python3.7m' \
-D PYTHON3_LIBRARY='/home/ubuntu/Documents/Libraries/python3.7/Python-3.7.4/libpython3.7m.so' \
-D PYTHON3_NUMPY_INCLUDE_DIRS='/usr/local/lib/python3.7/site-packages/numpy/core/include' \
-D PYTHON3_PACKAGES_PATH='/usr/local/lib/python3.7/site-packages' ..
请注意,PYTHON3_库必须以共享库(.so和not.a)为目标。我第一次编译Python3.7时没有标记--enable shared,所以它不起作用

在运行cmake之前(从OpenCv),在配置步骤中,您应该以这些打印的信息结束,以确保您的目标是正确的python:(这里是针对python3.8的,但下面的步骤将显示python3.7)

这些PYTHON_标志及其用法不在最新的Opencv文档(如4.5.2)中,而仅在以前的文档(如3.2.0)中:


然后我就可以在3.7和3.8中导入cv2了

为什么不试试pip安装呢?另外,如果您想坚持使用python,并且不需要自己构建opencv,请尝试使用
pip安装opencv python
(或pip3,无论在何处进行区分)。如果你不需要的话,不用麻烦构建。嗨,伙计们,谢谢你们的回复,不幸的是,我也需要cpp的opencv。同时,我重新编译了Opencv,认为它会检测到我的两个Python版本,但在/usr/local/lib/python3.7文件夹中没有创建任何内容。我在任何地方都看不到这些文件的一些信息,在OpenCv文档中也没有关于CMake参数的信息。谢谢