import pymono로 인해 'ImportError: cannot name BSON'이 발생합니다.당신은 어떻게 수입 오류를 고칩니까?
Flask, MongoDB, Python을 사용하는 간단한 Hello World 앱을 사용하는 데 어려움을 겪고 있습니다.앱에서 가져오기를 시도할 때 폭탄이 터집니다.bson
모듈.다음을 통해 모든 모듈이 성공적으로 설치되었습니다.pip
그리고 나는 달리고 있습니다.virtualenv
오류가 발생하는 이유를 잘 모르겠습니다.ImportError: cannot import name BSON
다음은 제 샘플 앱 코드입니다.
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)
이 문제를 디버깅하는 방법이나 누락된 내용이 있는지 잘 모르겠습니다.
편집: 결과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
편집 2: bson과 pymongo를 제거하고, 다시 실행합니다.pip install pymongo
지금 추적 완료:
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
제거해 보십시오.bson
그리고.pymongo
패키지를 설치한 다음pymongo
꾸러미 pymongo
자체 설치bson
패키지와 당신이 다른 패키지로 덮어쓴 것 같습니다.bson
패키지 설치 및 그것이 아마도 당신의 가져오기 오류의 원인일 것입니다.
참고:
- pip install pymongo를 pip로 하면 bson도 설치되지만 가상 환경에 설치 bson이라는 메시지가 표시되지 않습니다.
- 또한 Pymongo는 bson을 dep로 나열하지 않습니다.
- 또한 pip-v 목록에는 bson이 설치된 것으로 표시되지 않습니다.
- 해당 글머리 기호 IMO에 코드 냄새가 있습니다(적어도 bson을 설치한다는 메시지를 인쇄합니다).
저도 같은 문제를 만났습니다.그 이유는 제가 설치하기 때문인 것 같습니다.pymongo
설치합니다.bson
그런 다음 bson을 제거합니다.그리고 나서 저는 이 문제를 얻었습니다.
pip freeze pymongo
아무것도 필요 없습니다.
그래서 아마도 그것은 그들만의 bson 패키지를 가지고 있을 것입니다.
내가 이 문제를 해결하는 것:
pip uninstall pymongo
pip uninstall bson
그런 다음 피몽고를 다시 설치합니다.
pip install pymongo
다음에서 목록을 반환하고 있습니다.hello()
문자열 또는 응답 개체를 반환해야 합니다. 플라스크 문서를 참조하십시오.예를 들어 다음을 반환하기 전에 목록을 문자열로 변환합니다.
return '\n'.join(json_docs)
언급URL : https://stackoverflow.com/questions/12983472/import-pymongo-causes-importerror-cannot-import-name-bson-how-do-you-fix-the
'programing' 카테고리의 다른 글
"org.springframework"를 호출할 수 없습니다.web.servlet.mvc.condition."this.condition"이(가) null이기 때문에 PatternsRequestCondition.getPatterns()"입니다. (0) | 2023.07.10 |
---|---|
최대 평균을 찾는 방법 (0) | 2023.07.10 |
PyPy가 표준 Python에 포함되지 않은 이유는 무엇입니까? (0) | 2023.07.10 |
특정 커밋까지 당김 (0) | 2023.07.10 |
페이스북 앱의 Oauth Redirect URI는 어디에서 설정합니까? (0) | 2023.07.10 |