【工作遇到的问题——已解决】pip3 install numpy失败

本文讲述了在Python项目中遇到的pip版本过旧导致numpy安装失败,通过升级pip、更换安装源并解决网络问题后,尝试计算列表中90%响应时间的过程。重点在于解决技术难题和最佳实践。

问题描述

需求:求出列表中90%的响应时间:

import numpy as np
for i in finalvalues.values():
    print np.percentile(map(int,i),95)

原因分析:

需要安装numpy第三方库,于是 pip3 install numpy后报错:
WARNING: You are using pip version 20.2.3; however, version 22.0.4 is available.
You should consider upgrading via the ‘/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip’ command.
原因:
您正在使用pip版本20.2.3;但是,22.0.4版是可用的。需要升级pip

在这里插入图片描述


解决方案:

升级pip:python3 -m pip install --upgrade pip

在这里插入图片描述
再次安装numpy

raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

原因:

Wifi或网络发包频率国小,等待时间过长,下载错误

解决方案:更换安装源

pip3 install -i https://pypi.douban.com/simple numpy

在这里插入图片描述

pycharm遇到的问题

1、pycharm需要删除之前的pip版本,然后在pycharm更新pip版本
在这里插入图片描述


python -m pip install -U --force-reinstall pip 

2、在pycharm换安装源
在这里插入图片描述
在这里插入图片描述
之后再次安装numpy库
成功
但是,执行代码后依然报错:
在这里插入图片描述
原因:不是同一个解析器的python
解决方案
在这里插入图片描述
在这里插入图片描述

你问的是: > 为什么 `pip show fer` 输出看起来没问题,但运行代码时仍然报错: > > ``` > ImportError: cannot import name 'FER' from 'fer' > ``` 并且你也已经安装了依赖: ```bash pip install opencv-python numpy pillow tensorflow matplotlib ``` 我们来 **深入分析这个“看似正常却无法导入”的诡异问题**。 --- ## ✅ 一、`pip show fer` 正常 ≠ 实际能用! 即使 `pip show fer` 显示的是 Omar178 的 FER 库,也 **不一定代表它真的正确安装或可导入**。以下是几种常见“显示正常但实际失败”的原因。 --- ### 🔍 原因 1:多个 Python 环境冲突(最常见!) 你可能有 **多个 Python 解释器**,比如: - Anaconda / Miniconda - Python 官网安装的原生 Python - VS Code / PyCharm 使用的虚拟环境 - Jupyter Notebook 内核 📌 你在终端执行 `pip install fer` 和 `pip show fer` 是在 **系统默认的 Python 环境中操作**, 但你的代码可能是用另一个解释器运行的(例如 IDE 自动使用了 conda 环境),导致找不到包。 ✅ **验证方法:** 在你的 Python 脚本开头加入以下代码,查看当前使用的是哪个 Python 和 site-packages 路径: ```python import sys print("Python 可执行文件路径:", sys.executable) print("Python 版本:", sys.version) print("模块搜索路径:\n", "\n".join(sys.path)) ``` 然后对比你在命令行中运行 `which python`(Linux/Mac)或 `where python`(Windows)的结果是否一致。 🔧 **解决方案:** 确保你在正确的环境中安装库: ```bash # 使用具体 Python 解释器安装 python -m pip install fer --force-reinstall # 或者 py -3.10 -m pip install fer ``` 不要直接用 `pip`,而是用 `python -m pip` 来避免环境错乱。 --- ### 🔍 原因 2:缓存问题导致假象 有时 `pip install` 看似成功,但由于网络中断、权限不足或缓存损坏,实际没有完整安装。 ⚠️ 即使 `pip show fer` 显示信息,也可能只是残留的元数据。 ✅ **解决办法:强制重新安装并清除缓存** ```bash pip uninstall fer -y pip cache purge # 清除缓存(可选) pip install --no-cache-dir fer ``` > `--no-cache-dir` 强制从网络下载新包,防止使用坏缓存。 --- ### 🔍 原因 3:文件结构异常 —— `__init__.py` 没有导出 `FER` 这是关键点! 打开你提示的路径: ``` C:\Users\邵圆圆\AppData\Local\Programs\Python\Python310\lib\site-packages\fer\__init__.py ``` 用文本编辑器打开这个 `__init__.py` 文件,检查里面有没有这行: ```python from .fer import FER ``` 或者类似导出语句。 🔍 如果内容是空的、只有注释、或导入了其他类(如 `Encryptor`),那就说明这是一个 **错误版本的 `fer` 包**! 📌 正确的 `fer`(omar178)应该有这样的结构: ``` site-packages/fer/ ├── __init__.py ← 包含 from .fer import FER ├── fer.py ← 包含 FER 类定义 ├── models.py └── ... ``` 如果 `fer.py` 根本不存在,或者 `__init__.py` 不导出 `FER`,那这个包就是无效的! ✅ **验证方式:手动查找文件是否存在 `FER` 类** 进入该目录下的 `fer.py` 文件,搜索是否有: ```python class FER: def __init__(self, face_detector='haar', ...): ... ``` 如果没有 → 安装失败 or 错误包。 --- ### 🔍 原因 4:TensorFlow 版本不兼容(间接影响) FER 库基于 TensorFlow 构建。如果你的 TensorFlow 版本与 FER 不兼容(如 TF 1.x vs 2.x),可能导致 `import fer` 报错,甚至让 Python 认为模块不存在。 ✅ 检查 TensorFlow 是否可用: ```bash python -c "import tensorflow as tf; print(tf.__version__)" ``` 📌 推荐版本组合: | FER 版本 | 推荐 TensorFlow | |--------|----------------| | 1.0.x ~ 1.1.x | TensorFlow 2.10.x 或更低(支持 Windows + Python 3.10) | ⚠️ 注意:**TensorFlow >= 2.11 开始不再支持 Windows 上的原生安装**(需 WSL) ✅ 解决方案: 降级到兼容版本: ```bash pip uninstall tensorflow -y pip install tensorflow==2.10.0 ``` 然后再重装 `fer`: ```bash pip install --force-reinstall fer ``` --- ## ✅ 终极诊断脚本 运行下面这段脚本来全面排查问题: ```python # diagnose_fer.py import sys import os print("1. 当前 Python 解释器路径:") print(sys.executable) print() print("2. Python 版本:") print(sys.version) print() print("3. 模块搜索路径 (sys.path):") for p in sys.path: print(" ", p) print() try: import fer print("4. 成功导入 fer 模块") print(" fer 模块位置:", fer.__file__) print() except ImportError as e: print("4. 导入 fer 失败:", e) print() exit() try: from fer import FER print("5. 成功从 fer 导入 FER 类 ✅") except ImportError as e: print("5. 无法导入 FER:", e) print() print("💡 请检查 fer/__init__.py 是否包含: from .fer import FER") print("📁 路径参考:", os.path.dirname(fer.__file__)) ``` 把这个脚本保存为 `diagnose_fer.py` 并运行: ```bash python diagnose_fer.py ``` 你会清楚看到到底卡在哪一步。 --- ## ✅ 最终解决方案汇总 | 问题 | 解决方法 | |------|---------| | 多环境冲突 | 用 `python -m pip` 替代 `pip` | | 缓存污染 | `pip cache purge && pip install --no-cache-dir fer` | | 包内容错误 | 手动检查 `fer/__init__.py` 和 `fer.py` | | TensorFlow 不兼容 | 安装 `tensorflow==2.10.0` | | 权限问题 | 以管理员身份运行 CMD / PowerShell | --- ## ✅ 推荐安装命令(一次性搞定) ```bash # 卸载所有相关包 pip uninstall fer tensorflow opencv-python -y # 安装兼容版本 pip install tensorflow==2.10.0 pip install opencv-python pip install --no-cache-dir fer ``` 然后运行测试代码: ```python from fer import FER detector = FER() print("🎉 FER 安装成功!") ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姑娘别秃头

你的鼓励是为我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值