我有一个名为的脚本requests.py
,可以导入请求包。该脚本要么无法访问包中的属性,要么无法导入它们。为什么这不起作用,我该如何解决?
以下代码引发一个AttributeError
。
import requests
res = requests.get('http://www.google.ca')
print(res)
Traceback (most recent call last):
File "/Users/me/dev/rough/requests.py", line 1, in <module>
import requests
File "/Users/me/dev/rough/requests.py", line 3, in <module>
requests.get('http://www.google.ca')
AttributeError: module 'requests' has no attribute 'get'
以下代码引发一个ImportError
。
from requests import get
res = get('http://www.google.ca')
print(res)
Traceback (most recent call last):
File "requests.py", line 1, in <module>
from requests import get
File "/Users/me/dev/rough/requests.py", line 1, in <module>
from requests import get
ImportError: cannot import name 'get'
或从requests
包中的模块导入的代码:
from requests.auth import AuthBase
Traceback (most recent call last):
File "requests.py", line 1, in <module>
from requests.auth import AuthBase
File "/Users/me/dev/rough/requests.py", line 1, in <module>
from requests.auth import AuthBase
ImportError: No module named 'requests.auth'; 'requests' is not a package
发生这种情况是因为名为本地模块的requests.py
阴影遮盖了requests
您要使用的已安装模块。当前目录位于之前sys.path
,因此本地名称优先于已安装名称。
出现此问题时,还有一个调试提示是仔细查看Traceback,并意识到所涉及脚本的名称与您要导入的模块匹配:
请注意您在脚本中使用的名称:
File "/Users/me/dev/rough/requests.py", line 1, in <module>
您尝试导入的模块: requests
将模块重命名为其他名称以避免名称冲突。
Python可能会在requests.pyc
文件旁边requests.py
(__pycache__
在Python 3中的目录中)生成一个文件。重命名后也要删除该文件,因为解释器仍将引用该文件,从而重新产生该错误。但是,如果文件已删除,则pyc
文件中的文件__pycache__
不应影响您的代码py
。
在该示例中,将文件重命名为my_requests.py
,删除requests.pyc
并再次运行将成功打印<Response [200]>
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句