web-dev-qa-db-ja.com

ImportError:objectidという名前のモジュールがありません

私は現在 Django-mongodb-engine 0.4.0バージョンをMacOS X 10.6.8にインストールしていて、「コンパイラ」モジュールのインポート中に奇妙なことに興味深いエラーが発生しました。

>> from Django_mongodb_engine import compiler

次のエラーが発生しました。

ImportError Traceback (most recent call last)
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django_extensions/management/commands/Shell_plus.pyc in <module>()
----> 1 from Django_mongodb_engine import compiler

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django_mongodb_engine/compiler.pyc in <module>()
      15 from pymongo.errors import PyMongoError
      16 from pymongo import ASCENDING, DESCENDING
 ---> 17 from pymongo.objectid import ObjectId, InvalidId
      18 
      19 from djangotoolbox.db.basecompiler import NonrelQuery, NonrelCompiler, \

ImportError: No module named objectid

pip コマンドを使用してパッケージをインストールしましたが、 pymongodjangotoolbox などのすべての依存関係が一緒にインストールされています。私が使用したpipコマンドは次のとおりです。

>> Sudo env ARCHFLAGS='-Arch i386 -Arch x86_64' pip install --upgrade  Django-mongodb-engine

関連パッケージの現在のバージョンは次のとおりです。

>> pip freeze | grep mongo
Django-mongodb-engine==0.4.0
pymongo==2.2

ObjectIdがpymongo内にインポートされなくなったため、Django_mongodb_engineパッケージが壊れていると思われます。代わりに、 bson モジュールに属しています。

この問題を解決するためのあなたの提案は何ですか? Django-mongodb-engineプロジェクトのクローンを作成し、githubで修正する必要がありますか?

12
ozgur

私は似たようなものに遭遇しました、私にとって問題はこの行でした:

from pymongo.objectid import ObjectId

この呼び出しは、PyMongo <2.2のバージョンで機能するようです

Pymongo 2.2では、objectidをインポートするための呼び出しは次のとおりです。

from bson.objectid import ObjectId
45
Vlad

彼らはすでに認識しているようですが( このプルリクエスト を参照)、開発ブランチに対してプルリクエストを作成した人はまだいません。それを修正して、新しいプルリクエストを送信してみてください。

2
Dominic Rodger

Bsonをpipで直接インストールしてみました。代わりにpymongoをアンインストールしてインストールしても、エラーは再発しませんでした。

1
David Anderton

私はPython3(2017年)を使用していて、次のことが機能することがわかりました。

from pymongo import MongoClient
from bson import ObjectId
0
Shane Reustle