ImportError:没有名为request的模块,但在路径中

2024-04-24 00:00:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图运行一个调用.py库的.py脚本。在

anyoung@ANYOUNG-LTW7 /cygdrive/c/Users/anyoung/test/temp/Image-Crawler
$ python main.py
Traceback (most recent call last):
  File "main.py", line 3, in <module>
    import urllib.request
ImportError: No module named request

由于某些原因,Python无法找到库。但是,我检查路径是否包括/usr/lib/python2.7/site-packages

^{pr2}$

/usr/lib/python2.7/site-packages显示request目录:

enter image description here

有什么办法解决这个错误吗?在

--根据第一个答案更新--

我安装了python3。但是模块仍然没有找到。在

cmd.exe中: C: \Users\anyoung>;pip3安装请求

Collecting requests
  Downloading https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8
a6ab1d6d60b69c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (9
1kB)
    100% |████████████████████████████████| 92kB 152kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b648
7b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133
kB)
    100% |████████████████████████████████| 143kB 216kB/s
Collecting idna<2.8,>=2.5 (from requests)
  Downloading https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1
af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 208kB/s
Collecting urllib3<1.24,>=1.21.1 (from requests)
  Downloading https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5
e7cb78a1d92c53851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133k
B)
    100% |████████████████████████████████| 143kB 261kB/s
Collecting certifi>=2017.4.17 (from requests)
  Downloading https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975f
c916b65f667c7b8c3a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl
(150kB)
    100% |████████████████████████████████| 153kB 407kB/s
Installing collected packages: chardet, idna, urllib3, certifi, requests
  The script chardetect.exe is installed in 'c:\users\anyoung\appdata\local\prog
rams\python\python37\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warn
ing, use --no-warn-script-location.
Successfully installed certifi-2018.4.16 chardet-3.0.4 idna-2.7 requests-2.19.1
urllib3-1.23
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' comm
and.

我通过GUI将c:\users\anyoung\appdata\local\programs\python\python37\Scripts添加到PATH变量:

enter image description here

再试一次,得到相同的错误消息:

anyoung@ANYOUNG-LTW7 /cygdrive/c/Users/anyoung/test/temp/Image-Crawler
$ python3 main.py
Traceback (most recent call last):
  File "main.py", line 4, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

Tags: pyhttpsorgnonepackagespy3anyfiles
1条回答
网友
1楼 · 发布于 2024-04-24 00:00:43

request和{}不是一回事。在

urllib.request与两者都不相同。在

仅仅因为两个东西有相似的名字并不意味着它们可以互换。requests是一个第三方包,用于在高级别上执行HTTP。urllib.request是python3标准库中urllib包中的一个模块,用于在较低级别执行HTTP、FTP和其他协议。在

这里的问题是,您试图在Python2.7中运行使用urllib.request的Python3代码。您可以将对urllib.request的每个引用重命名为其等效的粗略python2,urllib2,这样就可以工作了。但可能不会。代码很有可能有其他特定于python3的导入或特性,因此它仍然无法运行,或者无法正确运行。在

正确的做法是在python3中运行python3代码。在

如果不能做到这一点,则需要考虑将代码移植回python2,或者使用six或{}将代码移植回双版本代码。3to2工具可以帮助您开始,但它不会自动为您完成所有事情,而且人们也无法在简单的堆栈溢出答案中告诉您如何做。在

相关问题 更多 >