PyMongo: AttributeErrors для существующих атрибутов в классе _cmessage - PullRequest
0 голосов
/ 03 июля 2018

Я использую pymongo для подключения к своим базам данных на сервере mongodb. Я все настроил и использовал простой учебник, чтобы начать с основных вещей в пимонго. Я закончил записывать это в файл Python:

from pymongo import MongoClient
from random import randint

client = MongoClient("localhost", 27017) #Class from PyMongo module
db = client["rothe_plana"]

# Initialize database settings for employers and events collections:
employersCollect = db["employers"]
eventsCollect = db["events"]

#-----------------------------------------------------
#Employer database managment:
#-----------------------------------------------------

#Inserts passed dictionary objects of employer profiles:
def insertNewEmployer(new_employer_profile):
    while True:
        try:
            readyProfile = new_employer_profile.copy()
            readyProfile['employer_id'] = randint(100, 999)
            employersCollect.insert_one()
        except pymongo.errors.DuplicateKeyError:
            continue
        break

def getListOfEmployerIDs():
    pass #get employer ids to identify and render template elements.

# -----------------------------------------------------
# Events database managment:
# -----------------------------------------------------

#Inserts passed dictionary objects of event data:
def insertNewEvent(new_event_data):
    while True:
        try:
            readyEventData = new_employer_profile.copy()
            readyEventData['event_id'] = randint(10000000, 99999999)
            employersCollect.insert_one()
        except pymongo.errors.DuplicateKeyError:
            continue
        break

Но если я запускаю это, я получаю исключение:

 Traceback (most recent call last):
      File "C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\pydevd.py", line 1664, in <module>
        main()
      File "C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\pydevd.py", line 1658, in main
        globals = debugger.run(setup['file'], None, None, is_module)
      File "C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\pydevd.py", line 1068, in run
        pydev_imports.execfile(file, globals, locals)  # execute the script
      File "C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
        exec(compile(contents+"\n", file, 'exec'), glob, loc)
      File "C:/Users/thoma/OneDrive/Projects_For_The_Web/Fliesen Rothe/PlanA/Pyramid_PlanA/pyramid_plana/datadbhandler.py", line 1, in <module>
        from pymongo import MongoClient
      File "C:\Users\thoma\OneDrive\Projects_For_The_Web\Fliesen Rothe\PlanA\Pyramid_PlanA\venv\lib\site-packages\pymongo\__init__.py", line 77, in <module>
        from pymongo.collection import ReturnDocument
      File "C:\Users\thoma\OneDrive\Projects_For_The_Web\Fliesen Rothe\PlanA\Pyramid_PlanA\venv\lib\site-packages\pymongo\collection.py", line 29, in <module>
        from pymongo import (common,
      File "C:\Users\thoma\OneDrive\Projects_For_The_Web\Fliesen Rothe\PlanA\Pyramid_PlanA\venv\lib\site-packages\pymongo\message.py", line 654, in <module>
        _op_msg_uncompressed = _cmessage._op_msg
    AttributeError: module 'pymongo._cmessage' has no attribute '_op_msg'

Поскольку я определенно не трогал код модуля Pymongo, я делаю что-то не так в своем коде выше. Кроме того, сеть не принесла никаких результатов, так что есть четкое объяснение этому?

РЕДАКТИРОВАТЬ: Я более внимательно посмотрел на файлы, которые были предоставлены вышеупомянутой ошибкой. И я вижу, что атрибут в указанном классе действительно существует. Так что это довольно странно. Даже если я закомментирую зависимую строку из pymongo, для этого класса есть еще один AtrributeError.

1 Ответ

0 голосов
/ 03 июля 2018

Я наконец решил проблему. Оказалось, что разрешения в моей файловой системе были обработаны неправильно. Первоначально я установил PyMongo через PyCharm (pip install pymongo). Но это просто не работает (не знаю почему), но я окончательно удалил pymongo из виртуальной среды и снова установил его вручную через PowerShell в виртуальной среде:

python -m pip install pymongo

Перезапуск PyCharm и запуск проекта больше не вызывали ошибок. Надеюсь, что это может помочь другим с этой проблемой

...