2012-05-01 33 views
7

tôi nhận được một số lỗi rất lạ sử dụng MongoKit:MongoKit "ImportError: Không có mô-đun tên ObjectId" lỗi

>>> from mongokit import * 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/mongokit/__init__.py", line 35, in <module> 
    from document import Document, ObjectId 
    File "/usr/local/lib/python2.7/dist-packages/mongokit/document.py", line 48, in <module> 
    from pymongo.objectid import ObjectId 
ImportError: No module named objectid 

tôi đã cố gắng mọi thứ để tìm ra lý do nhưng không giúp. Thực ra tôi đã googled lỗi "ImportError: No module named objectid" và không có kết quả nào cả. Tôi đã cố gắng sử dụng MongoKit theo hướng dẫn đơn giản http://namlook.github.com/mongokit/introduction.html#a-quick-example và dòng đầu tiên của hướng dẫn tạo ra lỗi lạ này. Dưới đây là nhật ký cài đặt MongoKit.

Tôi đang làm gì sai?

[email protected]:~$ sudo pip install mongokit 
Downloading/unpacking mongokit 
    Downloading mongokit-0.7.2.tar.gz (69Kb): 69Kb downloaded 
    Running setup.py egg_info for package mongokit 

Downloading/unpacking pymongo>=2.0.1 (from mongokit) 
    Downloading pymongo-2.2.tar.gz (228Kb): 228Kb downloaded 
    Running setup.py egg_info for package pymongo 

Downloading/unpacking anyjson>=0.2.2 (from mongokit) 
    Downloading anyjson-0.3.1.tar.gz 
    Running setup.py egg_info for package anyjson 

Installing collected packages: mongokit, pymongo, anyjson 
    Running setup.py install for mongokit 

    Running setup.py install for pymongo 
    building 'bson._cbson' extension 
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/_cbsonmodule.c -o build/temp.linux-i686-2.7/bson/_cbsonmodule.o 
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/time64.c -o build/temp.linux-i686-2.7/bson/time64.o 
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/buffer.c -o build/temp.linux-i686-2.7/bson/buffer.o 
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/encoding_helpers.c -o build/temp.linux-i686-2.7/bson/encoding_helpers.o 
    gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-i686-2.7/bson/_cbsonmodule.o build/temp.linux-i686-2.7/bson/time64.o build/temp.linux-i686-2.7/bson/buffer.o build/temp.linux-i686-2.7/bson/encoding_helpers.o -o build/lib.linux-i686-2.7/bson/_cbson.so 
    building 'pymongo._cmessage' extension 
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c pymongo/_cmessagemodule.c -o build/temp.linux-i686-2.7/pymongo/_cmessagemodule.o 
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/buffer.c -o build/temp.linux-i686-2.7/bson/buffer.o 
    gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-i686-2.7/pymongo/_cmessagemodule.o build/temp.linux-i686-2.7/bson/buffer.o -o build/lib.linux-i686-2.7/pymongo/_cmessage.so 

    Running setup.py install for anyjson 

Successfully installed mongokit pymongo anyjson 
Cleaning up... 

Trả lời

11

Đó là lỗi trong phụ thuộc. Kể từ PyMongo 1.11objectid lives in the bson module, not pymongo.

+0

Có cách nào để giải quyết nó? Hoặc tôi có nên viết lại mã nguồn của bên thứ 3 không? Đó là một điều rất cơ bản, thực sự là dòng đầu tiên của hướng dẫn và không hoạt động. 'Coz tất cả tôi đang làm - chỉ cần nhập khẩu "từ mongokit nhập khẩu *" – Zelid

+0

Đó là một lỗi báo cáo: https://github.com/namlook/mongokit/pull/88 – Electro

+0

cảm ơn, tôi sẽ thử pip cài đặt phiên bản mới nhất từ git – Zelid

10

Như Electro đã nói, đó là lỗi.

tôi đã sử dụng ít hack bẩn sau đây để giữ cho trang web của tôi chạy đến khi nó được cố định:

import sys 
import pymongo 
import bson.objectid 
pymongo.objectid = bson.objectid 
sys.modules["pymongo.objectid"] = bson.objectid 
Các vấn đề liên quan