Я пытаюсь понять, почему вижу ошибку ModuleNotFoundError: No module named 'urlparse', но никогда не вызываю urlparse в своем коде. когда я пытаюсь установить urlparse с помощью pip, я вижу, что этого модуля не существует. Когда я пытаюсь установить urllib.parse с помощью pip, я вижу то же сообщение с urllib.parse. No matching distribution found for urllib.parse.
Что мне здесь не хватает?
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()





Библиотека flask_oauth не поддерживает Python3 - вы увидите из трассировки:
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'
В Python 3 было изменено поведение модуля urlparse:
https://docs.python.org/2/library/urlparse.html
The urlparse module is renamed to urllib.parse in Python 3.
Этот вопрос был поднят с сопровождающими пакета на Github. Исходный код на Github выглядит исправленным, но исправленная версия не была перенесена в pypi.
Решение, предлагаемое на Github, - это установка напрямую из источника вместо pypi:
pip install git+https://github.com/mitsuhiko/flask-oauth
flask-oauth теперь говорит, что он не поддерживается, и вместо этого использовать Flask-Dance
Для python3 я использовал
from urllib.parse import urlparse
вместо from urlparse import parse_qsl, urlparse и работает
рекомендуемый документ: https://docs.python.org/3/library/urllib.parse.html
На самом деле это вопрос о flask_oauth, а не urlparse. Этот ответ не поможет, если кто-то не собирается переписывать исходный код библиотеки (вместо установки из git, как предполагает другой ответ).
В трассировке стека найдите, какой файл распространяет ошибку ModuleNotFoundError. Если это из одного из ваших собственных исходных файлов, выполните рефакторинг кода, чтобы urlparse импортировался следующим образом:
urllib.parse import urlparse
В противном случае найдите модуль, которому принадлежит этот файл. Затем обновите этот модуль.
pip install --upgrade [module-name]
Можно опубликовать всю трассировку? Возможно, какой-то используемый вами пакет не поддерживает Python3. Пожалуйста, проверьте это вопрос