Silent Whisper

record things, events and people in life

Python module 'requests' has no attribute 'post'的排错经历

Posted at — Sep 12, 2019
所有内容均为原创,转载必须在文章开头注明[转载自Silent Whisper,原文链接 - Python module 'requests' has no attribute 'post'的排错经历]

初用python,就被其环境和文件冲突折磨,这是以前用其他语言没有碰到的。记录下来,作为对自己和其他人的一点提示吧。

一个文件仅几行,使用了requests,执行就报错“module ‘requests’ has no attribute ‘post’”

Traceback (most recent call last):
  File "token.py", line 2, in <module>
    import requests
  File "/usr/lib/python3/dist-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/usr/lib/python3/dist-packages/urllib3/__init__.py", line 8, in <module>
    from .connectionpool import (
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 3, in <module>
    import logging
  File "/usr/lib/python3.7/logging/__init__.py", line 26, in <module>
    import sys, os, time, io, traceback, warnings, weakref, collections.abc
  File "/usr/lib/python3.7/traceback.py", line 5, in <module>
    import linecache
  File "/usr/lib/python3.7/linecache.py", line 11, in <module>
    import tokenize
  File "/usr/lib/python3.7/tokenize.py", line 35, in <module>
    from token import *
  File "/vagrant/data/token.py", line 15, in <module>
    response = requests.post(url, data=json.dumps(body))
AttributeError: module 'requests' has no attribute 'post'

从google、baidu上查这个错误提示,基本都是说有文件和引用的requests模块重名导致的这个问题。但实际上我只引用了requests,而且文件名是token.py,与requests毫无关系。百思不得其解, 没有头绪之际,看堆栈信息中有个文件“/usr/lib/python3.7/tokenize.py”,猜测是不是自己的文件和官方类库中这个文件都含有‘token’导致的呢?把自己的文件名改了一下果然就不报错了。真有点搞不懂这个处理逻辑的,文件名里含有某个单词都不行,唉。。。继续研究python吧,谁让现在的机器学习框架和项目大多用python呢。