I can successfully load the TextBlob module from a simple script, but not from a Flask app. I'll show you the code and the error.
Loading in a simple script works:
from textblob import TextBlob
text = 'purfect kitten'
blob = TextBlob(text)
print blob.correct()
Loading from Flask app throws error:
from textblob import TextBlob
from flask import (
Flask,
request
)
app = Flask(__name__)
@app.route('/parse', methods=['GET', 'POST'])
def parse():
b = TextBlob(request.json['text'])
b.correct()
return b
if __name__ == '__main__':
print 'running app on port 5000'
app.debug = True
app.run()
The error:
127.0.0.1 - - [18/Nov/2015 14:54:25] "POST /parse HTTP/1.1" 500 - Traceback (most recent call last): File "/Users/peter/if/root/venv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__ return self.wsgi_app(environ, start_response) File "/Users/peter/if/root/venv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app response = self.make_response(self.handle_exception(e)) File "/Users/peter/if/root/venv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception reraise(exc_type, exc_value, tb) File "/Users/peter/if/root/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app response = self.full_dispatch_request() File "/Users/peter/if/root/venv/lib/python2.7/site-packages/flask/app.py", line 1478, in full_dispatch_request response = self.make_response(rv) File "/Users/peter/if/root/venv/lib/python2.7/site-packages/flask/app.py", line 1577, in make_response rv = self.response_class.force_type(rv, request.environ) File "/Users/peter/if/root/venv/lib/python2.7/site-packages/werkzeug/wrappers.py", line 841, in force_type response = BaseResponse(*_run_wsgi_app(response, environ)) File "/Users/peter/if/root/venv/lib/python2.7/site-packages/werkzeug/wrappers.py", line 57, in _run_wsgi_app return _run_wsgi_app(*args) File "/Users/peter/if/root/venv/lib/python2.7/site-packages/werkzeug/test.py", line 867, in run_wsgi_app app_rv = app(environ, start_response) TypeError: 'TextBlob' object is not callable
I'm using textblob version 0.11.0 installed with pip.
The TextBlob
is working fine. It is how you are using your TextBlob
in your Flask
app that is the problem.
Flask's app.route
requires a Response
or str
to be returned, but your are returning b
which is a TextBlob
. You need to return b
as a str
@app.route('/parse', methods=['GET', 'POST'])
def parse():
b = TextBlob('hello world')
b.correct()
return str(b)