Как найти правильную версию bson из pip для pymongo/mongoengine

Я работаю над (python 2.7) приложением flask-mongoengine, которое использует bson ObjectId. Проект требует bson тем или иным способом. У меня нет root-доступа на хосте, я пытаюсь развернуть приложение, и pson install bson завершается неудачно:

-bash-4.1$ pip install bson
Collecting bson
 Using cached bson-1.1.0.tar.gz
  Complete output from command python setup.py egg_info:
  Traceback (most recent call last):
   File "<string>", line 1, in <module>
   File "/tmp/pip-build-BBOawV/bson/setup.py", line 24, in <module>
    import bson
   File "bson/__init__.py", line 66, in <module>
    from . import codec
   File "bson/codec.py", line 28, in <module>
    from .objects import *
   File "bson/objects.py", line 36
    class BSONObject(object, metaclass=ABCMeta):
                                      ^
SyntaxError: invalid syntax

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-BBOawV/bson/

С другой стороны, https://api.mongodb.org/python/current/installation.html заявляет, что я не должен использовать эту версию bson и полагаться на реализацию pymongo. Тем не менее, на моем компьютере, где у меня установлен pymongo-3.2.1, я не могу импортировать pymongo.objectId - так что я делаю не так и как мне заставить bson работать с моей установкой?

Большое спасибо!

3 ответа

У меня была та же проблема, и переустановка PyMongo исправила зависимости BSON:

pip install --upgrade --force-reinstall pymongo

У меня была похожая проблема.

Просто скачайте tarball с https://pypi.python.org/pypi/bson/0.4.3 и выполните установку вручную:

python setup.py install

Поскольку у меня нет доступа с правами root и я не могу установить дистрибутивную версию bson, я решил удалить объект в своем определении документа БД. Это решает это для меня, так как это также чище, но правда такова, как сказал Михай: pip install bson, похоже, ограничен проектами python3.

Другие вопросы по тегам