Flask ImportError mit bson unter OS X
Ich habe Mühe, eine einfache "Hello World" app, um die Arbeit mit Flask, MongoDB und Python. Die app ist der Bombenanschlag beim importieren von der bson
Modul. Alle Module erfolgreich installiert wurden über pip
und ich bin in einer virtualenv
so bin ich nicht sicher, warum bin ich immer die Fehlermeldung: ImportError: cannot import name BSON
Hier ist mein Beispiel-Anwendung code:
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)
Ich bin mir nicht sicher, wie man das Debuggen, oder wenn es etwas fehlt mir hier.
Bearbeiten: Ergebnisse der 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: Entfernt bson-und pymongo, reran pip install pymongo
. Komplette Spur jetzt:
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
InformationsquelleAutor der Frage Wesley Tansey | 2012-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deinstallieren Sie das
bson
undpymongo
Pakete und dann die Neuinstallation despymongo
Paket.pymongo
installiert seine eigenenbson
Paket und ich denke, Sie haben überschrieben, es mit den anderenbson
Paket-installation, und das ist wahrscheinlich das, was verursacht Ihre import-Fehler.InformationsquelleAutor der Antwort Pedro Romano
Traf ich das gleiche problem.
Ich glaube, der Grund ist ich installieren
pymongo
und installieren Sie dannbson
.Dann habe ich deinstallieren bson. Dann hab ich dieses problem.
pip freeze pymongo
es verlangt Nichts.Also vielleicht hat es seinen eigenen bson-Paket.
Was ich dieses problem lösen:
pip uninstall pymongo
pip uninstall bson
und dann neu installieren pymongo
pip install pymongo
InformationsquelleAutor der Antwort g10guang
Sind Sie wieder eine Liste, in
hello()
. Sie muss einen string zurückgeben oder ein Response-Objekt, siehe Kolben docs. E. g. konvertieren Sie die Liste in einen string vor der Rückkehr:InformationsquelleAutor der Antwort Rob Wouters