同样的Python代码在PyCharm和Pydev里面的运行结果不一致
一、问题描述:写一个基于requests的Demo,现在PyCharm下运行提示AttributeError,但是在Pydev里面运行结果通过,如下两图:
图一:Pycharm里面的运行结果
图二:Pydev里面的运行结果
二、源代码:
代码实现需求:
1. 复习Flask的路由和HTTP方法的相关知识
2. 介绍Flask如何处理请求
3. 讲解token的概念和登录模块的思路
4. 实现一个简易的验证登录模块
5. 使用Requests验证
================================================================
app.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import base64
import random
import time
from flask import Flask, request
app = Flask(__name__)
users = {
"magigo": ["123456"]
}
def gen_token(uid):
token = base64.b64encode(':'.join([str(uid), str(random.random()), str(time.time() + 7200)]))
users[uid].append(token)
return token
def verify_token(token):
_token = base64.b64decode(token)
if not users.get(_token.split(':')[0])[-1] == token:
return -1
if float(_token.split(':')[-1]) >= time.time():
return 1
else:
return 0
@app.route('/index', methods=['POST', 'GET'])
def index():
print request.headers
return 'hello'
@app.route('/login', methods=['POST', 'GET'])
def login():
uid, pw = base64.b64decode(request.headers['Authorization'].split(' ')[-1]).split(':')
if users.get(uid)[0] == pw:
return gen_token(uid)
else:
return 'error'
@app.route('/test1', methods=['POST', 'GET'])
def test():
token = request.args.get('token')
if verify_token(token) == 1:
return 'data'
else:
return 'error'
if __name__ == '__main__':
app.run(debug=True)
=====================
requsets.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
from requests import app
r = requests.get('http://127.0.0.1:5000/login', auth=('magigo', '123456'))
print r.text
token ='bWFnaWdvOjAuMzE4MTUxNTA1MjQ4OjE0MjU4MzkzMjMuODk='
r = requests.get('http://127.0.0.1:5000/test1', params={'token': token})
print r.text
================================================================================
三、解决方案
出现这种情况的原因:没有XXX方法,一般跟编译器没有关系,而是跟引用的库有关系。
(1)在Pycharm下查看引用的库版本:Setting-
》Project Interpreters
(2)在Pydev下查看引用的库版本