Python can';t修复导入错误:没有名为请求错误的模块
嗨,我正在尝试学习网页抓取,但这段代码给了我一个错误,我查了一下为什么,并尝试了他们说的,但仍然不起作用。我的mac电脑里也有一个windows,我在那里试过,它可以工作,但在macOS上就不行了 好的,这是我试图执行的代码:Python can';t修复导入错误:没有名为请求错误的模块,python,importerror,Python,Importerror,嗨,我正在尝试学习网页抓取,但这段代码给了我一个错误,我查了一下为什么,并尝试了他们说的,但仍然不起作用。我的mac电脑里也有一个windows,我在那里试过,它可以工作,但在macOS上就不行了 好的,这是我试图执行的代码: #!/usr/bin/env python3 import bs4 as bs import urllib.request sauce = urllib.request.urlopen("https://pythonprogramming.net/parsememc
#!/usr/bin/env python3
import bs4 as bs
import urllib.request
sauce = urllib.request.urlopen("https://pythonprogramming.net/parsememcparseface/").read()
soup = bs.BeautifulSoup(sauce, "lxml")
print(soup)
这是我得到的错误:
`Traceback (most recent call last):
File "/Users/aaa/Desktop/import bs4 as bs.py", line 4, in <module>
import urllib.request
ImportError: No module named request
[Finished in 0.4s with exit code 1]
[shell_cmd: python -u "/Users/aaa/Desktop/import bs4 as bs.py"]
[dir: /Users/aaa/Desktop]
`回溯(最近一次呼叫最后一次):
文件“/Users/aaa/Desktop/import bs4 as bs.py”,第4行,在
导入urllib.request
ImportError:没有名为request的模块
[完成时间为0.4s,退出代码为1]
[shell\u cmd:python-u”/Users/aaa/Desktop/import bs4 as bs.py”]
[目录:/Users/aaa/桌面]
[路径:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin]
`
我查了一下,试了试他们说的话
但终端机说:
Requirement already satisfied: requests in
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (2.23.0)
Requirement already satisfied: idna<3,>=2.5 in
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (from
requests) (2.9)
Requirement already satisfied: certifi>=2017.4.17 in
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (from
requests) (2019.11.28)
Requirement already satisfied: chardet<4,>=3.0.2 in
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (from
requests) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (from
requests) (1.25.8)
已满足要求:中的请求
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages(2.23.0)
已满足要求:idna=2.5英寸
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages(来自
请求(2.9)
已满足要求:certifi>=2017.4.17英寸
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages(来自
请求(2019.11.28)
已满足要求:chardet=3.0.2英寸
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages(来自
(3.0.4)
已满足要求:urllib3=1.25.0,!=1.25.1,=1.21.1英寸
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages(来自
(1.25.8)
我删除了这个#/usr/bin/env python3
从我的代码中删除,并重试,但仍然说同样的话
几个月前,我可能会因为一次意外而弄乱这些“路径”的东西。(我当时正试图解决一个bug或smt,我复制并粘贴了一些东西到终端上,而一些人说我不应该这样做,我可能会弄错smt。但我还没有注意到任何东西,我不确定那是什么东西)我甚至不知道这意味着什么,我是编程新手。我真的不知道这可能是问题所在。您似乎有两个Python版本(3.7、3.8),因此当您安装
request
时,它可能位于两个位置中的任何一个。
我安装并设置了pyenv
,并在顶部安装了virtualenvwrapper
,以解决类似问题;这是一个长期的解决方案,但得到了回报
查看您的.bashrc
(或Mac/Windows上的类似软件)。在更改路径和其他环境变量时,您可能需要小心。
如果它是一个独立的应用程序,那么你的shebang#就可以了/usr/bin/env python3
urllib在哪里
这个库似乎是内置的,所以可能是Python安装的问题
如果您有特定的文件,请查找:
ls /home/USER/.pyenv/versions/3.7.0/lib/python3.7/urllib/ # On Linux with pyenv
# For me, it lists "request.py" and others
在Python命令行(以及我当前的环境)上,我得到了以下结果:
>>> import urllib as ur
>>> ur.__path__
['/home/USER/.pyenv/versions/3.7.0/lib/python3.7/urllib']
>>> import urllib.request as rq
>>> dir(rq)
['AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'AbstractHTTPHandler', ..., 'urlsplit', 'urlunparse', 'warnings']
您似乎有两个Python版本(3.7、3.8),因此当您安装
request
时,它可能位于两个位置中的任何一个。
我安装并设置了pyenv
,并在顶部安装了virtualenvwrapper
,以解决类似问题;这是一个长期的解决方案,但得到了回报
查看您的.bashrc
(或Mac/Windows上的类似软件)。在更改路径和其他环境变量时,您可能需要小心。
如果它是一个独立的应用程序,那么你的shebang#就可以了/usr/bin/env python3
urllib在哪里
这个库似乎是内置的,所以可能是Python安装的问题
如果您有特定的文件,请查找:
ls /home/USER/.pyenv/versions/3.7.0/lib/python3.7/urllib/ # On Linux with pyenv
# For me, it lists "request.py" and others
在Python命令行(以及我当前的环境)上,我得到了以下结果:
>>> import urllib as ur
>>> ur.__path__
['/home/USER/.pyenv/versions/3.7.0/lib/python3.7/urllib']
>>> import urllib.request as rq
>>> dir(rq)
['AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'AbstractHTTPHandler', ..., 'urlsplit', 'urlunparse', 'warnings']
这回答了你的问题吗?这回答了你的问题吗?我可以删除其中一个版本吗?像3.7一样,可以吗?删除之前,运行
pip freeze
查看您安装了哪些软件包。版本删除可能会有所帮助,但我认为更重要的是路径配置(先备份)。(你在mac上工作吗?-我主要在Linux上工作)是的,是mac。我在你发布之前删除了3.8,哈哈。我只是一个编程新手,所以我希望我现在没事了?哈哈,我希望我没有再做错什么。我的路径看起来像这样/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbi如果删除了3.8,您的路径可能类似于:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbinca我可以删除其中一个版本吗?像3.7一样,可以吗?删除之前,运行pip freeze
查看您安装了哪些软件包。版本删除可能会有所帮助,但我认为更重要的是路径配置(先备份)。(你在mac上工作吗?-我主要在Linux上工作)是的,是mac。我在你发布之前删除了3.8,哈哈。我只是一个编程新手,所以我希望我现在没事了?哈哈,我希望我没有再做错什么。我的路径看起来像这样/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbi如果删除了3.8,您的路径可能类似于:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin