没有名为 'urlparse' 的模块,但我没有使用 urlparse
No module named 'urlparse' but I'm not using urlparse
我想弄清楚为什么我看到错误 ModuleNotFoundError: No module named 'urlparse'
但我从不在我的代码中调用 urlparse。当我尝试使用 pip 安装 urlparse 时,我发现这个模块不存在。当我尝试使用 pip 安装 urllib.parse 时,我看到与 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'
urlparse 模块的行为已在 Python 3:
中更改
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
对于python3我已经使用了
from urllib.parse import urlparse
而不是 from urlparse import parse_qsl, urlparse
并且有效
在您的堆栈跟踪中,找到传播 ModuleNotFoundError 的文件。如果它来自您自己的源文件之一,请重构您的代码,因此 urlparse
被导入为:
urllib.parse import urlparse
否则,找到该文件所属的模块。然后升级那个模块。
pip install --upgrade [module-name]
我想弄清楚为什么我看到错误 ModuleNotFoundError: No module named 'urlparse'
但我从不在我的代码中调用 urlparse。当我尝试使用 pip 安装 urlparse 时,我发现这个模块不存在。当我尝试使用 pip 安装 urllib.parse 时,我看到与 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'
urlparse 模块的行为已在 Python 3:
中更改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
对于python3我已经使用了
from urllib.parse import urlparse
而不是 from urlparse import parse_qsl, urlparse
并且有效
在您的堆栈跟踪中,找到传播 ModuleNotFoundError 的文件。如果它来自您自己的源文件之一,请重构您的代码,因此 urlparse
被导入为:
urllib.parse import urlparse
否则,找到该文件所属的模块。然后升级那个模块。
pip install --upgrade [module-name]