You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

pip与Python路径不一致致模块无法导入?原因及解决方案

问题分析与解决:ImportError: No module named requests(当pip和Python路径不一致时)

没错,pip和Python的路径不一致就是导致这个错误的核心原因!我来给你拆解清楚问题所在,以及对应的解决办法:

1. 为什么路径不一致会引发问题?

你通过/usr/local/bin/pip安装的requests,会被放在/usr/local/lib/python2.7/site-packages目录下,这个目录属于你后来安装的Python 2.7。而你运行应用时调用的/usr/bin/python是系统默认自带的Python 2.7,它只会去自己对应的/usr/lib/python2.7/site-packages目录找模块,自然找不到你用另一个pip安装的requests。

2. 路径不一致的原因是什么?

这在Mac OS X系统里很常见:

  • /usr/bin/python是系统预装的Python 2.7,属于系统级别的环境,一般不建议随便修改它的依赖。
  • 你大概率是通过Homebrew或者其他第三方工具额外安装了一套Python 2.7,同时配套安装了对应的/usr/local/bin/pip,于是就出现了两套独立的Python 2.7环境,pip和默认Python不匹配。

3. 解决办法(按推荐程度排序)

方法一:使用虚拟环境(强烈推荐)

虚拟环境能彻底隔离项目依赖,避免不同环境的包冲突,是Python开发的最佳实践:

  1. 先安装virtualenv:
pip install virtualenv
  1. 进入你的项目目录,创建一个虚拟环境:
virtualenv venv
  1. 激活虚拟环境(激活后命令行前面会出现(venv)标识):
source venv/bin/activate
  1. 现在安装requests,然后运行你的应用——所有依赖都会被安装在这个虚拟环境里,和系统环境完全隔离:
pip install requests
python your_app.py
  1. 开发完成后,退出虚拟环境只需执行:
deactivate

方法二:用pip对应的Python来运行脚本

如果你不想用虚拟环境,直接调用和pip匹配的Python版本来运行应用即可:

/usr/local/bin/python your_app.py

或者如果你的系统里python2指向的是/usr/local/bin/python,可以简化成:

python2 your_app.py

方法三:给系统默认Python安装requests

如果你坚持要用系统默认的/usr/bin/python运行应用,那需要给这个Python单独安装requests:
可以用系统自带的easy_install:

sudo easy_install requests

或者找到系统默认的pip(如果有的话)来安装:

sudo /usr/bin/pip install requests

内容的提问来源于stack exchange,提问作者Abe Miessler

火山引擎 最新活动