Linux系统下python pip/conda安装opencv(opencv-python)编译出错解决方法

文章讲述了用户在不同Python环境和版本下遇到的opencv-python安装错误,包括编译失败和找不到满足要求的版本。提供了安装build-essential和cmake,以及选择低版本opencv来解决问题的方法。
Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

问题描述:提示编译出错(不同的pip/conda/linux版本报的错误不一致)

错误一:

  Traceback (most recent call last):
    File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
      main()
    File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pep517/_in_process.py", line 205, in build_wheel
      metadata_directory)
    File "/usr/local/lib/python3.6/dist-packages/setuptools/build_meta.py", line 217, in build_wheel
      wheel_directory, config_settings)
    File "/usr/local/lib/python3.6/dist-packages/setuptools/build_meta.py", line 202, in _build_with_temp_dir
      self.run_setup()
    File "/usr/local/lib/python3.6/dist-packages/setuptools/build_meta.py", line 254, in run_setup
      self).run_setup(setup_script=setup_script)
    File "/usr/local/lib/python3.6/dist-packages/setuptools/build_meta.py", line 145, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 535, in <module>
      main()
    File "setup.py", line 309, in main
      cmake_source_dir=cmake_source_dir,
    File "/tmp/pip-build-env-tde8voxz/overlay/lib/python3.6/site-packages/skbuild/setuptools_wrap.py", line 683, in setup
      cmake_install_dir,
    File "setup.py", line 448, in _classify_installed_files_override
      raise Exception("Not found: '%s'" % relpath_re)
  Exception: Not found: 'python/cv2/py.typed'
  ----------------------------------------
  ERROR: Failed building wheel for opencv-python
Failed to build opencv-python
ERROR: Could not build wheels for opencv-python which use PEP 517 and cannot be installed directly
WARNING: You are using pip version 20.3.3; however, version 21.3.1 is available.
You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.

 错误二:

  Traceback (most recent call last):
    File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
      main()
    File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 262, in build_wheel
      metadata_directory)
    File "/usr/local/lib/python3.6/dist-packages/setuptools/build_meta.py", line 217, in build_wheel
      wheel_directory, config_settings)
    File "/usr/local/lib/python3.6/dist-packages/setuptools/build_meta.py", line 202, in _build_with_temp_dir
      self.run_setup()
    File "/usr/local/lib/python3.6/dist-packages/setuptools/build_meta.py", line 254, in run_setup
      self).run_setup(setup_script=setup_script)
    File "/usr/local/lib/python3.6/dist-packages/setuptools/build_meta.py", line 145, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 535, in <module>
      main()
    File "setup.py", line 309, in main
      cmake_source_dir=cmake_source_dir,
    File "/tmp/pip-build-env-efsyy48d/overlay/lib/python3.6/site-packages/skbuild/setuptools_wrap.py", line 683, in setup
      cmake_install_dir,
    File "setup.py", line 448, in _classify_installed_files_override
      raise Exception("Not found: '%s'" % relpath_re)
  Exception: Not found: 'python/cv2/py.typed'
  ----------------------------------------
  ERROR: Failed building wheel for opencv-python
Failed to build opencv-python
ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-based projects

解决方法一:安装build-essential与cmake后,再然后重新安装opencv-python,安装指令如下(若无需使用opencv-python新版本的特定功能,则不推荐使用,因为新版本需要编译安装,编译时间约20分钟左右)

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install build-essential cmake

解决方法二:查看当前未能安装成功的opencv版本,然后指定一个低版本的opencv-python安装(推荐使用,部分低版本安装无需编译,可以瞬间完成安装)

# 如默认安装的opencv-python版本为4.8,切换4.5版本安装
pip install opencv-python==4.5.1.48

# 注:1、一些低版本的opencv-python不用编译,可以直接安装成功
#    2、版本的详细版本号可以尝试安装后,根据可以选择的版本提示安装
pip install opencv-python==4.5
ERROR: Could not find a version that satisfies the requirement opencv-python==4.3 (from versions: 3.2.0.8, 3.3.0.10, 3.3.1.11, 3.4.0.12, 3.4.0.14, 3.4.1.15, 3.4.2.16, 3.4.2.17, 
3.4.3.18, 3.4.4.19, 3.4.5.20, 3.4.6.27, 3.4.7.28, 3.4.8.29, 3.4.9.31, 3.4.9.33, 3.4.10.35, 
3.4.10.37, 3.4.11.39, 3.4.11.41, 3.4.11.43, 3.4.11.45, 3.4.13.47, 3.4.14.51, 3.4.14.53, 
3.4.15.55, 3.4.16.57, 3.4.16.59, 3.4.17.61, 3.4.17.63, 3.4.18.65, 4.0.0.21, 4.0.1.23, 
4.0.1.24, 4.1.0.25, 4.1.1.26, 4.1.2.30, 4.2.0.32, 4.2.0.34, 4.3.0.36, 4.3.0.38, 4.4.0.40, 
4.4.0.42, 4.4.0.44, 4.4.0.46, 4.5.1.48, 4.5.2.52, 4.5.2.54, 4.5.3.56, 4.5.4.58, 4.5.4.60, 
4.5.5.62, 4.5.5.64, 4.6.0.66, 4.7.0.68, 4.7.0.72, 4.8.0.74, 4.8.0.76)
ERROR: No matching distribution found for opencv-python==4.5

补充内容:部分低版本安装虽不用编译,但版本号低于4.8的opencv包在VSCode中没有代码提示,因此能安装新版本尽可能安装新版本

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) Looking in indexes: https://mirror.baidu.com/pypi/simple/, https://mirrors.aliyun.com/pypi/simple/ Looking in links: https://www.paddlepaddle.org.cn/whl/mkl/stable.html WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='mirrors.aliyun.com', port=443): Read timed out. (read timeout=15)")': /pypi/simple/paddlepaddle-gpu/ Collecting paddlepaddle-gpu==1.8.5.post107 Downloading https://mirrors.aliyun.com/pypi/packages/55/dc/0d66f7c06cb3efea5caef4e82ebf2dd245ffcda635b2e5ca15ef0fc2a2e7/paddlepaddle_gpu-1.8.5.post107-cp37-cp37m-manylinux1_x86_64.whl (407.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 407.2/407.2 MB 1.9 MB/s eta 0:00:0000:0100:02 Requirement already satisfied: prettytable in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (0.7.2) Requirement already satisfied: six in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (1.16.0) Requirement already satisfied: protobuf>=3.1.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (3.20.1) Requirement already satisfied: scipy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (1.6.3) Requirement already satisfied: Pillow in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (8.2.0) Requirement already satisfied: astor in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (0.8.1) Requirement already satisfied: pyyaml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (5.4.1) Requirement already satisfied: objgraph in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (3.4.1) Requirement already satisfied: graphviz in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (0.13) Requirement already satisfied: opencv-python in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (4.5.1.48) Requirement already satisfied: matplotlib in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (3.3.4) Requirement already satisfied: decorator in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (4.4.2) Collecting opencv-python Using cached https://mirrors.aliyun.com/pypi/packages/34/a3/403dbaef909fee9f9f6a8eaff51d44085a14e5bb1a1ff7257117d744986a/opencv_python-4.2.0.32-cp37-cp37m-manylinux1_x86_64.whl (28.2 MB) Requirement already satisfied: funcsigs in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (1.0.2) Requirement already satisfied: pathlib in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (1.0.1) Requirement already satisfied: rarfile in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (3.1) Requirement already satisfied: gast==0.3.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (0.3.3) Requirement already satisfied: requests>=2.20.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (2.22.0) Requirement already satisfied: nltk in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (3.4.5) Requirement already satisfied: numpy>=1.12 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlepaddle-gpu==1.8.5.post107) (1.19.5) Requirement already satisfied: idna<2.9,>=2.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests>=2.20.0->paddlepaddle-gpu==1.8.5.post107) (2.8) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests>=2.20.0->paddlepaddle-gpu==1.8.5.post107) (3.0.4) Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests>=2.20.0->paddlepaddle-gpu==1.8.5.post107) (1.25.6) Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests>=2.20.0->paddlepaddle-gpu==1.8.5.post107) (2019.9.11) Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->paddlepaddle-gpu==1.8.5.post107) (0.10.0) Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->paddlepaddle-gpu==1.8.5.post107) (3.0.9) Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->paddlepaddle-gpu==1.8.5.post107) (2.8.2) Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->paddlepaddle-gpu==1.8.5.post107) (1.1.0) Requirement already satisfied: setuptools in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib->paddlepaddle-gpu==1.8.5.post107) (56.2.0) WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Error parsing requirements for pip: [Errno 2] No such file or directory: '/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/pip-22.1.2.dist-info/METADATA' WARNING: Error parsing requirements for opencv-python: [Errno 2] No such file or directory: '/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/opencv_python-4.5.1.48.dist-info/METADATA' Installing collected packages: opencv-python, paddlepaddle-gpu Attempting uninstall: opencv-python WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: No metadata found in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages Found existing installation: opencv-python 4.5.1.48 WARNING: No metadata found in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages WARNING: No metadata found in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages WARNING: No metadata found in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages WARNING: No metadata found in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages WARNING: No metadata found in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages WARNING: No metadata found in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages Can't uninstall 'opencv-python'. No files were found to uninstall. WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) Successfully installed opencv-python-4.2.0.32 paddlepaddle-gpu-1.8.5.post107 WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution -qdm (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) WARNING: Ignoring invalid distribution - (/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages) Note: you may need to restart the kernel to use updated packages.
最新发布
01-01
你贴出的日志是 **在 AI Studio 或类似 Python 环境中安装 `paddlepaddle-gpu` 时的完整输出**。虽然最后显示: ``` Successfully installed opencv-python-4.2.0.32 paddlepaddle-gpu-1.8.5.post107 ``` 但前面有一堆警告,比如: ``` WARNING: Ignoring invalid distribution -qdm WARNING: No metadata found in ... Can't uninstall 'opencv-python'. No files were found to uninstall. Error parsing requirements for pip ``` 这些信息让人担心:**到底有没有成功启用 GPU?还能不能正常训练?** --- ## ✅ 最终结论(先说重点) > ✅ **你的 `paddlepaddle-gpu` 已经安装成功!** > > ⚠️ 那些“WARNING”大多是 **包管理器元数据损坏导致的提示**,不影响运行。 > > 🔍 下一步你应该验证是否真的能使用 GPU。 --- ## 🧰 一、清除警告的根本原因分析 | 警告 | 原因 | 是否严重 | |------|------|----------| | `Ignoring invalid distribution -qdm` | 文件夹名被错误解析(如 `-qdm` 来自 `_qdmdist-info` 损坏) | ❌ 不严重,只是提示 | | `No metadata found` / `METADATA not found` | `.dist-info` 文件夹损坏或被删 | ❌ 不影响已安装库的功能 | | `Can't uninstall opencv-python`: No files found | pip 找不到元数据来卸载,但仍可装新版本 | ⚠️ 中等风险(可能残留旧文件) | 👉 这些问题通常出现在: - 使用了 `!pip install xxx` 多次 - 手动删除过某些包目录 - AI Studio 镜像环境本身存在缓存污染 ✅ **只要代码能跑通、GPU 可用,就不影响最终结果。** --- ## ✅ 二、验证 GPU 是否真正可用(关键步骤) 请运行以下代码确认: ```python import paddle.fluid as fluid # 检查是否支持 CUDA print("is_compiled_with_cuda:", fluid.is_compiled_with_cuda()) # 查看可用 GPU 数量 print("GPU count:", fluid.core.get_cuda_device_count()) # 如果都为 True,则可以使用 CUDAPlace if fluid.is_compiled_with_cuda() and fluid.core.get_cuda_device_count() > 0: print("✅ 当前环境支持 GPU 加速") else: print("❌ 当前环境不支持 GPU,请检查安装") ``` ### ✅ 正常输出应为: ``` is_compiled_with_cuda: True GPU count: 1 ✅ 当前环境支持 GPU 加速 ``` --- ## ✅ 三、测试一个简单模型能否在 GPU 上运行 ```python import paddle.fluid as fluid import numpy as np place = fluid.CUDAPlace(0) if fluid.is_compiled_with_cuda() else fluid.CPUPlace() print("运行设备:", "GPU" if fluid.is_compiled_with_cuda() else "CPU") with fluid.dygraph.guard(place): # 创建一个小网络 linear = fluid.Linear(784, 10) optimizer = fluid.optimizer.AdamOptimizer(learning_rate=0.001, parameter_list=linear.parameters()) # 模拟一批数据 x_data = np.random.rand(64, 784).astype('float32') y_data = np.random.randint(0, 10, (64, 1)).astype('int64') for step in range(5): x_var = fluid.dygraph.to_variable(x_data) y_var = fluid.dygraph.to_variable(y_data) logits = linear(x_var) loss = fluid.layers.cross_entropy(logits, y_var) avg_loss = fluid.layers.mean(loss) acc = fluid.layers.accuracy(logits, y_var) avg_loss.backward() optimizer.minimize(avg_loss) linear.clear_gradients() print(f"Step {step+1}, Loss: {avg_loss.numpy()[0]:.4f}, Acc: {acc.numpy()[0]:.4f}") print("🎉 GPU 训练测试完成!") ``` > ✅ 如果这段代码顺利执行并打印 loss → 表示你已经 **真正跑在 GPU 上了!** --- ## ✅ 四、如何修复/避免未来出现这类警告? ### ✅ 方法 1:重启 Kernel + 清理缓存(AI Studio 推荐) 在 Jupyter Notebook 中操作: 1. 点击菜单栏:**Kernel → Restart & Clear Output** 2. 再运行一次安装命令(只装一次): ```bash !pip install paddlepaddle-gpu==1.8.5.post107 -f https://www.paddlepaddle.org.cn/whl/mkl/stable.html ``` ### ✅ 方法 2:手动清理破损的 dist-info 目录(高级用户) 进入路径: ``` /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/ ``` 删除所有以 `-qdm`, `~~~`, 或损坏命名的文件夹,例如: - `_qdmdist-info` → 改回 `qdm-dist-info` 或直接删掉 - `opencv_python-4.5.1.48.dist-info` → 若内容为空也删除 然后重装: ```bash pip install --force-reinstall opencv-python==4.5.1.48 ``` ⚠️ 注意:不要乱删非破损文件! --- ## ✅ 五、建议最佳实践(避免再出问题) | 操作 | 建议 | |------|------| | 安装命令 | 只运行一次 `pip install paddlepaddle-gpu` | | 升级环境 | 使用 AI Studio 的“高级版”镜像(自带 GPU 支持) | | 开发流程 | 先验证 `is_compiled_with_cuda()` 再训练 | | 日志处理 | 忽略 `Ignoring invalid distribution` 类型警告 | --- ## ✅ 总结 | 问题 | 解答 | |------|------| | `paddlepaddle-gpu` 装上了吗? | ✅ 成功安装 | | WARNING 能忽略吗? | ✅ 可以,除非功能异常 | | 如何确认用了 GPU? | ✅ 用 `fluid.is_compiled_with_cuda()` + 实际训练测试 | | 需要重装系统环境吗? | ❌ 不需要,当前即可使用 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值