1

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.

1 Answer 1

3

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)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.