programing

import pymono로 인해 'ImportError: cannot name BSON'이 발생합니다.당신은 어떻게 수입 오류를 고칩니까?

magicmemo 2023. 7. 10. 22:15
반응형

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

반응형