鱼香rose'Blog

Parking Project 环境配置复盘总结

\(\Huge{Parking Project 环境配置复盘总结}\)

项目背景

项目:OpenCVLearning/项目实战三_停车场车位识别 at main · zhongqiangwu960812/OpenCVLearning

  • 项目路径:D:\桌面\OpenCVLearning-main\项目实战三_停车场车位识别
  • 环境:Windows 11 + Anaconda
  • 目标依赖:
    • Python 3.10(兼容 OpenCV / Pillow / Matplotlib / NumPy / PyTorch)
    • OpenCV 4.10.0
    • NumPy 1.24.3
    • Pillow 11.1.1
    • Matplotlib 3.7.2
    • tqdm 4.66.1
    • PyTorch 2.10.0 CPU 版本 + TorchVision 0.25.0

遇到的问题及解决方案

问题 1:Windows 下 pip install -r requirements.txt 失败

报错示例

AttributeError: module 'pkgutil' has no attribute 'ImpImporter'

原因分析

  • pip 在构建 wheel 时,setuptools 与 pkg_resources 版本不兼容 Python 3.12,导致 pkgutil.ImpImporter 不存在。
  • numpy、Pillow 等模块需要编译 C 扩展,如果环境中 Python 版本太新或者 pip/setuptools 版本冲突,编译失败。

解决方法

  • 将 Python 版本固定为 3.10。
  • 对于 PyTorch 和 CPU 依赖库,优先用 pip 官方轮子。
  • 对于其他常用库(OpenCV、Matplotlib、Pillow、tqdm)用 conda 安装,避免编译失败。

问题 2:NumPy 与 OpenCV / Pillow / PyTorch 的版本冲突

报错示例

A module that was compiled using NumPy 1.x cannot be run in NumPy 2.4.2 as it may crash
ImportError: numpy.core.multiarray failed to import

原因分析

  • Python 3.11 + numpy 2.x 不兼容很多第三方包(OpenCV、PyTorch、Pillow)。
  • OpenCV、PyTorch 的预编译模块都是基于 NumPy 1.x 编译的。

解决方法

  • 将 Python 版本降为 3.10
  • 将 NumPy 降级到 1.24.3,与其他库兼容

最终做法

  • 使用 conda 安装:
conda install numpy=1.24.3
  • 其他库用 conda 安装,保证依赖一致。

问题 3:Matplotlib / Pillow 安装报错

报错示例

error: Microsoft Visual C++ 14.0 or greater is required

原因分析

  • Windows 下很多 Python 库包含 C/C++ 扩展,需要 Visual C++ Build Tools。
  • 缺少运行库或者编译环境会导致安装失败。

解决方法

  • 安装 Microsoft Visual C++ 2015–2022 Redistributable (x64)
  • Pillow、Matplotlib 使用 conda 安装,避免编译:
conda install pillow=10.0.0 matplotlib=3.7.2 tqdm=4.66.1

问题 4:OpenCV 安装后无法 import

报错示例

ImportError: numpy.core.multiarray failed to import

原因分析

  • numpy 版本过高 (2.x) 与 OpenCV 4.8.1 wheel 不兼容。
  • 或者 Python 版本不在 OpenCV 支持范围内。

解决方法

  • 确保 Python 3.10
  • 确保 numpy 1.24.3
  • 安装 OpenCV:
pip install opencv-python==4.10.0

问题 5:PyTorch 安装后 ModuleNotFoundError / OSError: WinError 182

报错示例

OSError: [WinError 182] 操作系统无法运行 %1。 Error loading "...fbgemm.dll"

原因分析

  • Windows 找到 fbgemm.dll,但依赖的 Microsoft Visual C++ 运行库缺失。
  • 旧 CPU 或 DLL 架构不匹配也可能导致此错误。
  • conda 安装的 PyTorch 和现有 DLL 或 OpenVINO 有冲突。

解决方法

  1. 安装 Microsoft Visual C++ Redistributable 2015–2022 x64
  2. 卸载残留的 conda / pip PyTorch、OpenVINO:
pip uninstall torch torchvision torchaudio -y
conda remove pytorch pytorch-mutex libopenvino-pytorch-frontend cpuonly -n Parking310 -y
  1. 使用官方 CPU pip 轮子:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
  1. 测试:
python -c "import torch; import torchvision; print(torch.__version__, torchvision.__version__)"

最终做法

  • 你通过 pip 安装 PyTorch + 预先安装 VC++ Redistributable,解决了 DLL 加载失败的问题。
  • 其余包(OpenCV、Matplotlib、Pillow、NumPy、tqdm)用 conda 安装,确保依赖一致。

最终环境配置总结

安装方式 版本 说明
Python conda 3.10 避免与 NumPy 2.x / OpenCV 冲突
NumPy conda 1.24.3 与 OpenCV / PyTorch 兼容
OpenCV conda 4.10.0 CPU 版本
Pillow conda 11.1.0 避免编译问题
Matplotlib conda 3.7.2 避免编译问题
tqdm conda 4.66.1 CLI 进度条
PyTorch pip 2.10.0 CPU 版本,解决 fbgemm.dll 错误
TorchVision pip 0.25.0 CPU 版本

安装命令

conda install opencv=4.10.0 numpy=1.24.3 pillow=10.0.0 matplotlib=3.7.2 tqdm=4.66.1
# 官网安装Visual C++,有则无需下载
# 官网链接:https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
# 文件名通常为:VC_redist.x64.exe
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu

测试

输入:

python -c "import torch; import torchvision; import cv2; import numpy; import PIL; import matplotlib; import tqdm; print('PyTorch版本:', torch.__version__); print('TorchVision版本:', torchvision.__version__); print('CUDA可用:', torch.cuda.is_available()); print('OpenCV版本:', cv2.__version__); print('NumPy版本:', numpy.__version__); print('Pillow版本:', PIL.__version__); print('Matplotlib版本:', matplotlib.__version__); print('tqdm版本:', tqdm.__version__)"

输出:

PyTorch版本: 2.10.0+cpu
TorchVision版本: 0.25.0+cpu
CUDA可用: False
OpenCV版本: 4.10.0
NumPy版本: 1.24.3
Pillow版本: 11.1.0
Matplotlib版本: 3.7.2
tqdm版本: 4.66.1

教训与经验

  1. Python 版本选择重要
    • 3.12 + numpy 2.x 对很多第三方库不兼容,Python 3.10 是稳定选择。
  2. 区分 pip 和 conda
    • pip 更适合 PyTorch、OpenCV 轮子(官方提供),避免 DLL 冲突。
    • conda 更适合 Matplotlib、Pillow、NumPy 等常用库,避免源码编译失败。
  3. Visual C++ 运行库是必须的
    • CPU 版本 PyTorch、Pillow、Matplotlib 都依赖 VC++,提前安装可以避免报错。
  4. 环境清理很关键
    • 卸载残留包,避免 conda + pip 冲突,特别是 OpenVINO / PyTorch-mutex。
  5. 测试每步
    • import + 打印版本,确保每个库能正常加载,避免后续调试踩坑。
posted @ 2026-02-26 21:59  鱼香_rose  阅读(45)  评论(0)    收藏  举报