python - CMake 后在 PyCharm 中找不到模块 cv2 (OpenCV)
问题描述
我刚刚在 OSX 上遇到了一个奇怪的问题,试图将 cv2 与我的 PyCharm IDE 一起使用。首先,我使用 brew 在本地安装了一个新的 Python3(确切地说是 3.7)副本,并选择这个实例作为我在 PyCharm 中的项目解释器。
通过终端验证正确的路径:
$ which python3
/usr/local/bin/python3
由于pip3 install opencv-python
无法安装模块,我使用了Adrian Rosebrock 的自编译方法,我在命令后立即编译成功
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D PYTHON3_LIBRARY=/usr/local/Cellar/python3/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7.dylib \
-D PYTHON3_INCLUDE_DIR=/usr/local/Cellar/python3/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m-darwin/ \
-D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=ON ..
然后我继续将cv2.cpython-35m-darwin.so文件重命名为cv2.so 重新启动后,我直接在终端中检查了 cv2 模块版本,看起来很有希望。
$ python3
Python 3.7.0a2 (v3.7.0a2:f7ac4fe52a, Oct 16 2017, 21:11:18)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.0.0-pre'
问题:在 PyCharm 中,即使选择了 python3 解释器,IDE 也无法识别 cv2 模块。
PyCharm 截图:
PyCharm 错误信息:
Traceback (most recent call last):
File "/Users/felix/PycharmProjects/MMW/Seminar5-2(@Python3)/test.py", line 1, in <module>
import cv2
ModuleNotFoundError: No module named 'cv2'
Process finished with exit code 1
有谁知道,我错过了什么?
从评论更新:
PyCharm 控制台的 sys.path 输出:
['/Applications/PyCharm Edu.app/Contents/helpers/pydev', '/Applications/PyCharm Edu.app/Contents/helpers/pydev', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages', '/Users/felix/PycharmProjects/MMW']
与 OSX 终端相比:
$ python3 Python 3.7.0a2 (v3.7.0a2:f7ac4fe52a, Oct 16 2017, 21:11:18) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']
解决方案
最后,我刚刚设法让 cv2 现在开始工作!
问题是,我不想在 Python3 中使用虚拟环境。
解决方案:
使用略有不同的命令 + 遵循原始指南 (-D PYTHON3_EXECUTABLE=/bin/python ) 中的步骤重建了 opencv 库。
发现,python3(通过 OSX 终端启动)在尝试导入模块后找不到 cv2,除非我在启动它之前切换/usr/local/lib/python3.7/site-packages/ 。
由于 cv2.so 文件位于此目录中,该目录未列出
sys.path
(在奇怪的情况下),我不得不手动将其附加到路径列表中。
有两个选项对我有用:a)本地
import sys
sys.path.insert(0, "/usr/local/lib/python3.7/site-packages/")
就在我尝试在 PyCharm 中导入 cv2 之前
b) 全球
nano ~/.bash_profile
添加以下行:
export PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python3.7/site-packages/"
并重新加载 .bash_profile :
. ~/.bash_profile
感谢@flyingteller和@eypros的帮助。
注意:PyCharm 在编译/启动程序之前并不知道 cv2 存在。因此语法高亮不会识别 cv2。不要介意这条线。不过它对我有用。
推荐阅读
- r - R:循环遍历行直到满足条件,然后在下一行重新开始
- r - 拟合模型中没有因素此外:警告消息:1:在复制中(粘贴(“〜”,xx),数据= mf):非因素被忽略:如何解决?
- kubernetes - kustomize 环境源文件中的多行值
- qt - 如何在不丢失 qml 中的复选标记的情况下自定义复选框颜色?
- python - ImageMagick to Wand:稀疏颜色重心问题
- reactjs - 在 redux-saga 中映射列表时使用延迟
- python - 什么是 django 日期时间字段格式
- java - 如何使用 Android Studio 在 Java 中计算总和
- python - Python:计算数组中的变化
- c# - 如何检测调用当前函数的调用的名称?