2015-11-18 15 views
1

Я могу успешно загрузить модуль TextBlob из простого скрипта, но не из приложения Flask. Я покажу вам код и ошибку.TypeError: объект 'TextBlob' не является вызываемым

Загрузка в простой скрипт работает:

from textblob import TextBlob 

text = 'purfect kitten' 

blob = TextBlob(text) 
print blob.correct() 

Загрузка из Колба приложения бросает ошибку:

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() 

ошибка:

 
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 

Я использую textblob версии 0.11. 0 установлен с пипсом.

ответ

2

TextBlob работает нормально. Именно так вы используете TextBlob в своем Flask приложении, которое является проблемой.

Колба-х app.route требует Response или str быть возвращены, но ваш возвращаются b, который является TextBlob. Вам необходимо вернуть b в качестве str

@app.route('/parse', methods=['GET', 'POST']) 
def parse(): 
    b = TextBlob('hello world') 
    b.correct() 
    return str(b) 
Смежные вопросы