【问题标题】:'No module named requests' even if I installed requests with pip'没有名为请求的模块',即使我使用 pip 安装了请求
【发布时间】:2017-10-20 18:49:01
【问题描述】:

我正在尝试测试 requests 模块是否已安装好。但我收到以下错误:

raceback (most recent call last):
  File "/Users/macbookpro/Desktop/test.py", line 1, in <module>
    import requests
ImportError: No module named requests

尝试运行以下测试脚本时:

import requests
print 'test'

但是我已经用 pip 安装了请求,pip list 命令给出了以下结果:

MBPdeMacBook2:~ macbookpro$ pip list
arrow (0.7.0)
beautifulsoup4 (4.4.1)
classifier (1.6.5)
coursera-dl (0.6.1)
Django (1.8.6)
html5lib (1.0b8)
keyring (9.0)
lxml (3.6.0)
Pillow (3.4.2)
pip (8.0.2)
pyasn1 (0.1.9)
requests (2.14.2)
setuptools (19.4)
six (1.10.0)
urllib3 (1.16)
vboxapi (1.0)
virtualenv (13.1.2)
wheel (0.26.0)

为什么没有导入请求?

编辑:

MBPdeMacBook2:~ macbookpro$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
MBPdeMacBook2:~ macbookpro$ which pip
/usr/local/bin/pip
MBPdeMacBook2:~ macbookpro$ python --version
Python 2.7.11
MBPdeMacBook2:~ macbookpro$ pip --version
pip 8.0.2 from /usr/local/lib/python2.7/site-packages (python 2.7)

【问题讨论】:

  • 你确定pip环境和python一样吗?做which pipwhich python。可能是您正在为 Python3 安装并使用 Python27 运行
  • @OptimusCrime 查看我的编辑
  • 你能同时运行python --versionpip --version吗?
  • @OptimusCrime 请看我的编辑
  • pip 与您的python 指向的环境不同。您需要查看您的PATH 变量...看看您是否为您的python 安装了pip,例如/Library/Frameworks/Python.framework/Versions/2.7/bin/pip 或 (pip2, pip2.7)。

标签: python python-2.7 python-requests


【解决方案1】:

一般来说,您应该养成在virtualenv 工作的习惯。我发现文档here 很有帮助。

如果您在虚拟环境中安装所有依赖项,您将(大部分)确定您正在安装这些依赖项。在与您运行作业的环境相同的环境中。

对于您的情况,在命令行上转到您的代码所在的目录并运行

pip install virtualenv
virtualenv my_project
source my_project/bin/activate

现在 virtualenv 已经激活了,你可以

pip install requests

只有安装在 virtualenv 中的内容才可用。这将使您的系统保持清洁。每个项目都应该有自己的 virtualenv,这意味着只有每个项目所需的依赖项可供他们使用。这样,您可以为一个项目安装某个依赖项的版本 1,为另一个项目安装版本 2。他们不会发生冲突。

安装完所有依赖后,运行

pip freeze > requirements.txt

获取已保存项目的所有依赖项的列表。下次您需要安装这些时,您只需运行

pip install -r requirements.txt

在 virtualenv 中完成工作后,运行

deactivate

【讨论】:

  • 我在 virtualenv 中完成了整个 pip freeze &gt; requirements.txt,然后在另一个文件夹中,复制了 requirements.txt,创建了一个新的 virtualenv,然后运行 ​​source env/bin/activate 然后运行 ​​pip install -r requiremnts.txt 并得到了错误no module named requests。但是,再次运行pip install requests(即使它一直 requirements.txt 文件中)解决了这个问题。很奇怪,但这就是发生在我身上的事情。
【解决方案2】:

我不是 100% 确定,但来自 which pythonwhich pip 的路径可能表明您安装了两个版本。 Python 版本是 OS X 附带的旧版本,以及另一个版本。

我建议你从 brew 安装 Python27(甚至更好的 Python3)。

您可以安装 brew with a single command,另外一个用于安装 Python27/3。完成后,您可以在 shell rc 文件中设置 PATH 变量,然后就可以开始了。

我已经安装了 Python27(通过 brew)并且我的(工作环境)报告了以下路径:

which python: /usr/local/bin/python
which pip: /usr/local/bin/pip

python --version: 2.7.15
pip --version: pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python2.7)

【讨论】:

  • 如何编辑路径以便 python 指向 OSX 附带的版本?
  • @mounaim 在我提供的链接中有示例。您编辑文件~/.profile 并插入export PATH=/usr/local/bin:/usr/local/sbin:$PATH
【解决方案3】:

我在 Ubuntu 18.04 LTS 上遇到了同样的问题,为了检查这一点,我首先检查了我的系统上是否安装了 requests 库。

在您工作的虚拟环境中的终端上运行这些命令

$ python

然后python命令行打开,然后运行

>>> import requests

在这之后如果你得到一个 ImportError 说,No module named requests,那么这意味着依赖项没有被正确安装。如果没有这个错误,则说明依赖安装成功。

【讨论】:

    【解决方案4】:

    例如,如果 pip 实际上是 pip3 而 python 实际上是 python2.7,就会发生这种情况。 在您的情况下, which pip 和 which python 消除了这种可能性,但这只是发生在我身上。

    解决方案是用 pip2 代替 pip;如果情况相反,您可以使用 pip3。

    【讨论】:

      【解决方案5】:

      只需进入您的虚拟环境并运行以下命令:

      1)。 pip install --user pipenv 2)。 pipenv 安装请求

      执行上述命令后cd到您的虚拟环境中的应用程序文件夹并运行它。希望它现在可以运行。

      参考链接:https://python-guide-pt-br.readthedocs.io/pt_BR/latest/dev/virtualenvs.html#make-sure-you-ve-got-python-pip

      【讨论】:

        猜你喜欢
        • 2020-07-17
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多