J'essaie de comprendre pourquoi je vois une erreur ModuleNotFoundError: No module named 'urlparse'
mais je n'appelle jamais urlparse dans mon code. lorsque j'essaie d'installer urlparse avec pip, je constate que ce module n'existe pas. Lorsque j'essaie d'installer urllib.parse avec pip, je vois le même message avec urllib.parse. No matching distribution found for urllib.parse
.
Qu'est-ce que j'oublie ici?
from flask import Flask, request, redirect, url_for, session, g, flash, \
render_template
from flask_oauth import OAuth
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# configuration
SECRET_KEY = 'development key'
DEBUG = True
# setup flask
app = Flask(__name__)
app.debug = DEBUG
app.secret_key = SECRET_KEY
oauth = OAuth()
# Use Twitter as example remote app
Twitter = oauth.remote_app('Twitter',
base_url='https://api.Twitter.com/1/',
request_token_url='https://api.Twitter.com/oauth/request_token',
access_token_url='https://api.Twitter.com/oauth/access_token',
authorize_url='https://api.Twitter.com/oauth/authenticate',
consumer_key='',
consumer_secret=''
)
@Twitter.tokengetter
def get_Twitter_token(token=None):
return session.get('Twitter_token')
@app.route('/')
def index():
access_token = session.get('access_token')
if access_token is None:
return redirect(url_for('login'))
access_token = access_token[0]
return render_template('templates/index.html')
if __name__ == '__main__':
app.run()
La bibliothèque flask_oauth ne prend pas en charge Python3 - vous verrez dans le traceback:
Traceback (most recent call last):
File "app.py", line 3, in <module>
from flask_oauth import OAuth
File "/Users/matthealy/virtualenvs/test/lib/python3.6/site-packages/flask_oauth.py", line 13, in <module>
from urlparse import urljoin
ModuleNotFoundError: No module named 'urlparse'
Le comportement du module urlparse a été modifié dans Python 3:
https://docs.python.org/2/library/urlparse.html
Le module urlparse est renommé urllib.parse dans Python 3.
Cela a été soulevé avec les mainteneurs de paquets sur Github . La source sur Github semble être fixe, mais la version fixe n'a pas été poussée sur pypi.
La solution suggérée sur Github est d'installer directement depuis la source au lieu de pypi:
pip install git+https://github.com/mitsuhiko/flask-oauth