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 有冲突。
解决方法:
- 安装 Microsoft Visual C++ Redistributable 2015–2022 x64
- 卸载残留的 conda / pip PyTorch、OpenVINO:
pip uninstall torch torchvision torchaudio -y
conda remove pytorch pytorch-mutex libopenvino-pytorch-frontend cpuonly -n Parking310 -y
- 使用官方 CPU pip 轮子:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
- 测试:
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
教训与经验
- Python 版本选择重要
- 3.12 + numpy 2.x 对很多第三方库不兼容,Python 3.10 是稳定选择。
- 区分 pip 和 conda
- pip 更适合 PyTorch、OpenCV 轮子(官方提供),避免 DLL 冲突。
- conda 更适合 Matplotlib、Pillow、NumPy 等常用库,避免源码编译失败。
- Visual C++ 运行库是必须的
- CPU 版本 PyTorch、Pillow、Matplotlib 都依赖 VC++,提前安装可以避免报错。
- 环境清理很关键
- 卸载残留包,避免 conda + pip 冲突,特别是 OpenVINO / PyTorch-mutex。
- 测试每步
- import + 打印版本,确保每个库能正常加载,避免后续调试踩坑。

浙公网安备 33010602011771号