Mac OS X下Python2.7已安装requests仍报ImportError求助
解决Mac OS X下Python 2.7装了requests却找不到的问题
这种情况我维护旧Python项目时也碰到过,核心原因基本是系统默认的Python环境和pip安装依赖的环境不匹配,咱们一步步来排查解决:
先确认问题根源
你执行pip install requests时,依赖被装到了/usr/local/lib/python2.7/site-packages,但运行python setup.py时调用的可能是Mac系统自带的Python(路径通常是/usr/bin/python),这个环境的site-packages目录和pip用的不是同一个,所以才会提示找不到模块。
可以先验证两个命令的对应关系:
- 执行
which python,查看当前python命令指向的路径 - 执行
which pip和pip -V,确认pip关联的Python版本及site-packages路径是否和安装时显示的一致
快速解决方法
方法1:直接用pip对应的Python运行脚本
既然pip把requests装到了/usr/local/lib/python2.7/site-packages,直接调用这个环境的Python来执行setup.py就行:
/usr/local/bin/python setup.py # 如果你的系统里python2.7指向这个环境,也可以简化成 python2.7 setup.py
方法2:强制把requests装到系统默认Python环境(不推荐)
如果一定要用系统默认的python命令运行,可以用sudo将包装到系统Python的site-packages目录:
sudo pip install requests --ignore-installed
⚠️ 注意:这种方法可能会影响系统自带工具依赖的Python包,谨慎使用。
方法3:用虚拟环境隔离(推荐)
对于Python 2.7这类旧版本,虚拟环境能彻底避免环境混乱的问题:
- 先安装virtualenv:
pip install virtualenv
- 在项目目录创建虚拟环境:
virtualenv venv
- 激活虚拟环境:
source venv/bin/activate
- 在虚拟环境里安装requests(虚拟环境是干净的,即使之前全局装过也需要重新安装):
pip install requests
- 最后运行setup.py:
python setup.py
用完虚拟环境后,执行deactivate即可退出。
附用户原始问题及报错
我正在运行Mac OS X系统与Python 2.7版本,明明已安装requests模块,但执行setup.py时仍提示找不到该模块。执行命令及报错信息如下:
$ python setup.py Traceback (most recent call last): File "setup.py", line 1, in <module> import requests ImportError: No module named requests执行pip install requests后显示:
Requirement already satisfied: requests in /usr/local/lib/python2.7/site-packages Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/site-packages (from requests) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python2.7/site-packages (from requests) Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python2.7/site-packages (from requests) Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python2.7/site-packages (from requests)
内容的提问来源于stack exchange,提问作者Kasper Nielsen
相关产品推荐
相关产品推荐

