title: import pymongo causes `ImportError: cannot import name BSON`. how do you fix the import error?
body: <p>I'm having trouble getting a simple Hello World app to work using Flask, MongoDB, and Python. The app is bombing when trying to import from the <code>bson</code> module. All modules were installed successfully via <code>pip</code> and I'm running in a <code>virtualenv</code>, so I'm not sure why I'm getting the error: <code>ImportError: cannot import name BSON</code></p>
  
  <p>Here is my sample app code:</p>
  
  <pre><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)
  </code></pre>
  
  <p>I'm not sure how to go about debugging this or if there's something I'm missing here.</p>
  
  <p>Edit: results of <code>pip freeze</code>:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>Edit2: Removed bson and pymongo, reran <code>pip install pymongo</code>. Complete trace now:</p>
  
  <pre><code>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
  </code></pre>