python mongodb pymongo bson

python - install pymongo windows



Flask ImportError con bson en OS X (3)

Tengo problemas para que una aplicación Hello World sencilla funcione con Flask, MongoDB y Python. La aplicación está bombardeando al intentar importar desde el módulo bson . Todos los módulos se instalaron correctamente a través de pip y estoy ejecutando en un virtualenv , así que no estoy seguro de por qué recibo el error: ImportError: cannot import name BSON

Aquí está mi código de ejemplo de aplicación:

import os from flask import Flask from flask import g from flask import jsonify from flask import json from flask import request from flask import url_for from flask import redirect from flask import render_template from flask import make_response import pymongo from pymongo import Connection from bson import BSON from bson import json_util app = Flask(__name__) @app.route(''/'') def hello(): connection = Connection() # Get your DB db = connection.my_database # Get your collection cars = db.cars # Create some objects import datetime car = {"brand": "Ford", "model": "Mustang", "date": datetime.datetime.utcnow()} # Insert it cars.insert(car) json_docs = [json.dumps(doc, default=json_util.default) for doc in cars.find()] return json_docs if __name__ == ''__main__'': # Bind to PORT if defined, otherwise default to 5000. port = int(os.environ.get(''PORT'', 5000)) app.debug = True app.run(host=''0.0.0.0'', port=port)

No estoy seguro de cómo solucionar esto o si hay algo que me falta aquí.

Edición: resultados de pip freeze de pip freeze :

Flask==0.9 Jinja2==2.6 WTForms==1.0.2 Werkzeug==0.8.3 bson==0.3.3 distribute==0.6.28 mongo==0.2.0 pymongo==2.3 pytz==2012g wsgiref==0.1.2

Edit2: Eliminado bson y pymongo, reran pip install pymongo . Rastreo completo ahora:

Traceback (most recent call last): 18:21:20 web.1 | File ".../venv/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__ 18:21:20 web.1 | return self.wsgi_app(environ, start_response) 18:21:20 web.1 | File ".../venv/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app 18:21:20 web.1 | response = self.make_response(self.handle_exception(e)) 18:21:20 web.1 | File ".../venv/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app 18:21:20 web.1 | response = self.full_dispatch_request() 18:21:20 web.1 | File ".../venv/lib/python2.7/site-packages/flask/app.py", line 1361, in full_dispatch_request 18:21:20 web.1 | response = self.make_response(rv) 18:21:20 web.1 | File ".../venv/lib/python2.7/site-packages/flask/app.py", line 1450, in make_response 18:21:20 web.1 | rv = self.response_class.force_type(rv, request.environ) 18:21:20 web.1 | File ".../venv/lib/python2.7/site-packages/werkzeug/wrappers.py", line 711, in force_type 18:21:20 web.1 | response = BaseResponse(*_run_wsgi_app(response, environ)) 18:21:20 web.1 | File ".../venv/lib/python2.7/site-packages/werkzeug/test.py", line 818, in run_wsgi_app 18:21:20 web.1 | app_iter = app(environ, start_response) 18:21:20 web.1 | TypeError: ''list'' object is not callable


Intente desinstalar los paquetes bson y pymongo y luego reinstalar el paquete pymongo . pymongo instala su propio paquete bson y creo que lo ha sobrescrito con la instalación del otro paquete bson y eso es probablemente lo que está causando su error de importación.


Me encontré con el mismo problema. Creo que la razón es que instalo pymongo y luego instalo bson . Entonces desinstalo bson. Entonces tengo este problema.

pip freeze pymongo no requiere nada.

Entonces tal vez tiene su propio paquete bson.

Lo que resuelvo este problema:

pip uninstall pymongo

pip uninstall bson

y luego reinstalar pymongo

pip install pymongo


Usted está devolviendo una lista en hello() . Debe devolver una cadena o un objeto de respuesta, consulte Documentos de matraz . Por ejemplo, convertir la lista en una cadena antes de volver:

return ''/n''.join(json_docs)