Python中在macOS系统安装requests库成功,但import时提示name 'request' is not defined如何解决?
用 pip 安装了 requests 库,下面是终端:
wujingyideMacBook:~ my$ sudo pip install requests Password: The directory '/Users/my/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/Users/my/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting requests Downloading requests-2.18.4-py2.py3-none-any.whl (88kB) 100% |████████████████████████████████| 92kB 92kB/s Collecting certifi>=2017.4.17 (from requests) Downloading certifi-2018.1.18-py2.py3-none-any.whl (151kB) 100% |████████████████████████████████| 153kB 210kB/s Collecting chardet<3.1.0,>=3.0.2 (from requests) Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB) 100% |████████████████████████████████| 143kB 140kB/s Collecting idna<2.7,>=2.5 (from requests) Downloading idna-2.6-py2.py3-none-any.whl (56kB) 100% |████████████████████████████████| 61kB 171kB/s Collecting urllib3<1.23,>=1.21.1 (from requests) Downloading urllib3-1.22-py2.py3-none-any.whl (132kB) 100% |████████████████████████████████| 133kB 159kB/s Installing collected packages: certifi, chardet, idna, urllib3, requests Successfully installed certifi-2018.1.18 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22
上面显示安装成功后,在终端启用了 python,但是还是显示 name 'request' is not defined
wujingyideMacBook:~ my$ python Python 2.7.10 (default, Jul 15 2017, 17:16:57) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin Type "help", "copyright", "credits" or "license" for more information.
import requests r = request.get("http://www.baidu.com") Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'request' is not defined
下面这段是在 pycharm 里显示的错误:
import requests r = requests.get("http://www.baidu.com") r.status_code r.encoding = 'utf-8' r.text
Traceback (most recent call last): File "/Users/my/PycharmProjects/demo/learn.py", line 1, in <module> import requests ImportError: No module named requests
Process finished with exit code 1
但是在 pycharm 的 progect interpreter 里明明添加了 requests 库
本人用的是 mac,自带的 python2.7,目前安装了 pycharm oc,之前安装过 anaconda,又卸载了,不知道是不是电脑坏境有问题,求解
Python中在macOS系统安装requests库成功,但import时提示name 'request' is not defined如何解决?
会不会是 pip 环境和 python 的执行环境不在一块?
这个问题很常见,是因为代码里写错了导入的模块名。
requests 是一个第三方库,安装后应该用 import requests 来导入。你遇到的错误 name 'request' is defined,通常是因为你在代码里写成了 import request(少了一个’s’),或者直接使用了 request 这个变量但从未定义它。
解决方案:
-
检查你的代码,确保导入语句是:
import requests而不是
import request。 -
使用时,应该通过模块名
requests来调用它的方法,例如:import requests response = requests.get('https://api.example.com') print(response.status_code) -
如果你确实需要直接使用
request作为变量名,那需要从requests模块中导入特定的函数或对象,但这通常不是发起HTTP请求的标准做法。标准做法就是上面第2点。
总结: 确认代码里导入和使用的都是 requests(带s)。
第一个错是因为 request.get 拼错了,漏了 s。
另一个问题是 mac 下 pip 命令不需要 sudo,使用 sudo 反而可能造成权限问题。
拼写错误改了之后运行成功了,之后 pycharm 跑这段也莫名的不报错了,感谢感谢。虽然我还是觉得我的系统环境有问题,不过能用就行~
一开始没加 sudo,但是安装失败了,后来按照网上的说法加了 sudo 才安好,不知道后面还会有什么问题
重要的不是做什么,而是为什么
sudo 不是随便用的
requests 吧
已经研究了两天了找不出环境的问题,只能靠 sudo 暂时解决库的安装问题,小白一只,以后多跟大神们学习 T T
尽快学会使用 virtualenv 吧,Mac 上随意 sudo pip install 会出人命的
我是用 brew 安装 python 的,命令上 python2+pip2, python3+pip3 分开,很好管理。

