初用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呢。