私は現在 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 コマンドを使用してパッケージをインストールしましたが、 pymongo 、 djangotoolbox などのすべての依存関係が一緒にインストールされています。私が使用した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で修正する必要がありますか?
私は似たようなものに遭遇しました、私にとって問題はこの行でした:
from pymongo.objectid import ObjectId
この呼び出しは、PyMongo <2.2のバージョンで機能するようです
Pymongo 2.2では、objectidをインポートするための呼び出しは次のとおりです。
from bson.objectid import ObjectId
彼らはすでに認識しているようですが( このプルリクエスト を参照)、開発ブランチに対してプルリクエストを作成した人はまだいません。それを修正して、新しいプルリクエストを送信してみてください。
Bsonをpipで直接インストールしてみました。代わりにpymongoをアンインストールしてインストールしても、エラーは再発しませんでした。
私はPython3(2017年)を使用していて、次のことが機能することがわかりました。
from pymongo import MongoClient
from bson import ObjectId