Нет модуля с именем 'urlparse', но я не использую urlparse - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь выяснить, почему я вижу ошибку 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()

Ответы [ 2 ]

0 голосов
/ 31 июля 2019

Для python3 я использовал

from urllib.parse import urlparse

вместо from urlparse import parse_qsl, urlparse и работает

рекомендуемый документ: https://docs.python.org/3/library/urllib.parse.html

0 голосов
/ 03 мая 2018

Библиотека 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'

Поведение модуля urlparse было изменено в Python 3:

https://docs.python.org/2/library/urlparse.html

Модуль urlparse переименован в urllib.parse в Python 3.

Это было поднято с сопровождающими пакетов на Github . Исходный код на Github выглядит исправленным, но исправленная версия не была отправлена ​​в pypi.

Решение, предлагаемое на Github, заключается в установке непосредственно из исходного кода вместо pypi:

pip install git+https://github.com/mitsuhiko/flask-oauth
...