导入requests模块不起作用
我在我的系统上安装了requests模块。
pip install requests
现在我想在rpel中导入requests。
import requests
但是出现了以下错误。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named requests
4 个回答
你是不是在用 Linux
,而且同时安装了 python2 和 python3 呢?
如果是这样的话,你用下面的命令:
pip install requests
会把模块安装到 python2 里。
所以如果你在 python3 里运行 import,可能会出现问题。
试着用下面的命令:
pip3 install requests
来在 python3 环境中安装这个模块。
当你在终端输入命令 pip install request
时,可能会出现这样的错误提示:
-bash: pip: command not found
或者
没有名为 requests 的模块
那么该如何解决这些错误呢?
首先,你需要下载以下文件,并用 Python 安装:http://get-pip.py
https://bootstrap.pypa.io/get-pip.py
去这个链接下载我提供的 Python 脚本,然后运行它,或者右键选择“另存为”。
接下来,在终端中运行这个脚本,命令是“python 空格(把脚本拖到终端里)”。然后再运行 pip install requests
,如果你看到下面的错误:
-bash: pip: command not found
请查看警告中提到的路径。
然后按照以下步骤操作:
你看到黄色的路径了吗?没错,就是这个:
/Users/macbookair/Library/... 等等
在终端中输入 cd
,然后把 bin 文件夹拖到终端里。
1. 输入 cd /Users/macbookair/Library/Python/2.7/bin
(格式是 cd /Users/你的名字/路径/Python/版本/bin
)
- 接着输入
./pip install requests
完成这些步骤后,
现在再运行你的 Python 脚本,应该就能正常工作了。
如果这对你有帮助,请给我点赞哦。
对于遇到类似问题的开发者:直接从他们网站上的包文件安装python3版本。
千万不要删除或编辑 usr/local/bin
里的任何东西!
rm -rf /Library/Frameworks/Python.framework/Versions/2.7
这条命令是用来删除旧的Python 2.7版本。rm -rf "/Applications/Python 2.7"
这条命令是用来删除安装在应用程序里的Python 2.7。从官方网站直接安装python3。
重新打开
VSCode
(如果你不使用它,那你应该试试),然后重新安装那些显示为“未找到”的模块,运行命令:pip3 install requests
以及其他“未找到”的模块,使用命令pip3 install xxxxxx
。
在你的 settings.json
文件中添加 "python.pythonPath": "/usr/local/bin/python3"
。
最常见的原因是你电脑上有两个版本的 Python 2.x,而你在 PATH
中排在前面的 pip
和排在前面的 python
不是一对儿。
这种情况可能有两种原因。
首先,你的 PATH
中可能是 /usr/local/bin
在 /usr/bin
前面,但你在 /usr/local
里的 Python 没有 pip
。所以,当你运行 pip install requests
时,实际上调用的是 /usr/bin/pip
,它会安装到 /usr/lib/python2.7/site-packages
。但是当你运行 python
时,调用的是 /usr/local/bin/python
,它会去 /usr/local/lib/python2.7/site-packages
找东西。
第二,即使你的两个 Python 2.x 在不同的位置,它们可能会想把 pip
(以及其他脚本和可执行文件)安装到同一个地方。通常情况下,/usr/bin
是系统或包管理器自带的东西,所以如果你用 /usr/bin/python ez_setup.py
或 /usr/bin/easy_install pip
等常见方式安装 pip
,它可能会被安装到 /usr/local/bin
。这样就会覆盖掉之前和 /usr/local/bin/python
一起的 /usr/local/bin/pip
。无论如何,结果基本上是一样的:现在的 pip
是 /usr/local/bin/pip
,但它仍然和你的 /usr
版本的 Python 绑定,而不是 /usr/local
的 Python,安装到 /usr/lib/python2.7/site-packages
,这是 /usr/local/bin/python
看不到的。
如果你的两个版本是,比如说 2.7 和 3.4,那就没问题;根据 PEP 394,3.x 的版本需要用 python3
和 pip3
来运行,2.x 的版本则需要用 python2
和 pip2
来运行。
如果你的两个版本是 2.6 和 2.7,那就有问题了,但你可以很容易地解决,因为你应该总是有 pip2.6
和 python2.6
,以及 pip2.7
和 python2.7
。你可以用 python
和 pip
来搞混自己,但其实没必要。
不过,如果你的两个版本都是 2.7,那就没办法区分了(除非你总是使用完整的绝对路径,这没人愿意这么做)。
那么,为什么会有人在不明白的情况下安装两个 Python 2 的副本呢?
最常见的原因是他们在 Mac 上,Mac 自带 Python 2.7,但他们看了一篇博客,告诉他们要安装另一个 Python,却没有解释怎么知道自己在做什么。苹果自带的 Python 在 /usr/bin
,但它会把脚本和二进制文件安装到 /usr/local/bin
。最流行的替代 Python 版本是 python.org 的安装包和 Homebrew,它们默认都会安装到 /usr/local/bin
。Mac 用户通常对 Unix 的了解不如 Linux 或 FreeBSD 用户,这可能也没什么帮助,但即使没有这些,这也是导致成千上万的人拥有不匹配的 pip
和 python
的完美方式,结果却不知道为什么。
过去,几乎所有 Mac Python 用户安装第二个 Python 都有很好的理由。在 OS X 10.6 之前,苹果自带的 Python 版本往往过时且有时会坏。如果苹果只给你 2.4,那安装 2.6 是有道理的。而且这样做没有问题,因为 python2.4
和 python2.6
很容易区分。但苹果已经好几年在安装可用的 2.7 了。有时你需要不同的版本(比如你需要 2.7.7 的 bug 修复,但苹果给你的是 2.7.5,你需要 32 位版本,或者需要像 Enthought 这样的额外版本,或者需要用它来构建 py2app
包等等),但这些理由对大多数人来说已经不再适用了。
事实上,许多 StackOverflow 上的人似乎有 三个 版本的 Python 2.7。我不太确定为什么这么普遍,但他们会用 Homebrew 安装 Python 2.7,然后又用 python.org 或 Enthought 的安装包,这样他们就有了三个 Python 2.7 版本,都在争夺 /usr/local/bin
的所有权。
那么,怎么解决这个问题呢?
- 如果你可以使用 Python 3.x,安装它并只使用
pip3
和python3
(还有ipython3
等等),这样路径就不是问题了。 - 如果你不需要第二个 Python 2.7,删除非苹果的那个,只用苹果的。
- 否则,永远不要使用苹果的 Python,不要为它安装东西,不要碰它;就让它留给苹果自己的工具。如果你使用 Homebrew,它的 Python 应该在
PATH
中排在更前面(确保/usr/local/bin
在/usr/bin
前面),这样你就可以用pip install foo
而不需要sudo
,而苹果的则不行,这样就不容易意外搞错安装到错误的地方。
我还见过至少一个 Windows 用户同时有 C:\Python27
和 D:\Python27
,这两个都在 PATH
中,C:
的在前面,但 pip
只安装在 D:
。这似乎比 Mac 的混乱少得多(可能是因为 Windows 不自带 Python,也没有包管理器,所以你只能通过运行安装程序来获取 Python)。而解决方案在这里更简单:Windows 不需要 Python,所以你可以删除你想要的那个。
最后,在非 Mac 的 *nix 系统上,特别是 RHEL/CentOS Linux,你可能会有一个操作系统需要的 Python 2.6 或 2.4,以及一个你自己安装的 Python 2.7,或者一个操作系统需要的 2.7 和一个作为某个“兼容性”包的依赖项安装的 2.5,或者类似的情况。无论如何,你很容易意外地为你实际上不使用的那个安装 pip
(尤其是如果你用 pip
启动器而不是包管理器来安装它)。
这里的解决方案很简单:卸载那个 pip
,然后用 yum
或 apt
或其他工具安装与你想用的 Python 2.7 相关的 python-pip
。并养成使用 python2.7
和 pip2.7
的习惯——或者直接在你的配置文件中添加别名,这样 python
或 py
或你喜欢的其他命令就可以运行 python2.7
。