更新:這是我在1.8.0 App Engine SDK上全新安裝的OS X 10.8.3上遇到的問題。OS X AppEngine - ImportError:沒有名爲_sqlite3的模塊
首先 - 有一堆關於SO的問題與相似的標題。我檢查了他們,我不相信他們回答我的問題。他們大多建議得到libsqlite3-dev的和重建蟒蛇得到_sqlite3.so,但是這已經在那裏應該是:
$ find/-name _sqlite3.so Password: ... /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_sqlite3.so /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_sqlite3.so /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_sqlite3.so
實際的代碼,導致應用程序引擎SDK,以嘗試加載模塊:
remaining = TaskSetElement.all().filter('taskSet', ts_key).filter('complete', False).count()
這裏的SDK堆棧跟蹤:此行對正在執行罰款
File "~/dev/myApp/myApp/task.py", line 90, in completeTaskSetElement
remaining = TaskSetElement.all().filter('taskSet', ts_key).filter('complete', False).count()
File "~/dev/GAE/google_appengine/google/appengine/ext/db/__init__.py", line 2133, in count
result = raw_query.Count(limit=limit, **kwargs)
File "~/dev/GAE/google_appengine/google/appengine/api/datastore.py", line 1698, in Count
batch = self.GetBatcher(config=config).next()
File "~/dev/GAE/google_appengine/google/appengine/datastore/datastore_query.py", line 2754, in next
return self.next_batch(self.AT_LEAST_ONE)
File "~/dev/GAE/google_appengine/google/appengine/datastore/datastore_query.py", line 2791, in next_batch
batch = self.__next_batch.get_result()
File "~/dev/GAE/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 604, in get_result
return self.__get_result_hook(self)
File "/Users/colin/dev/GAE/google_appengine/google/appengine/datastore/datastore_query.py", line 2528, in __query_result_hook
self._batch_shared.conn.check_rpc_success(rpc)
File "~/dev/GAE/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1222, in check_rpc_success
rpc.check_success()
File "~/dev/GAE/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 570, in check_success
self.__rpc.CheckSuccess()
File "/Users/colin/dev/GAE/google_appengine/google/appengine/api/apiproxy_rpc.py", line 156, in _WaitImpl
self.request, self.response)
File "~/dev/GAE/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 200, in MakeSyncCall
self._MakeRealSyncCall(service, call, request, response)
File "~/dev/GAE/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 234, in _MakeRealSyncCall
raise pickle.loads(response_pb.exception())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1382, in loads
return Unpickler(file).load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1090, in load_global
klass = self.find_class(module, name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1124, in find_class
__import__(module)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/__init__.py", line 24, in
from dbapi2 import *
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/dbapi2.py", line 27, in
from _sqlite3 import *
File "~/dev/GAE/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 856, in load_module
raise ImportError('No module named %s' % fullname)
ImportError: No module named _sqlite3
我有一大堆的數據存儲代碼之前。我直接從命令行運行dev_appserver.py或在pydev運行eclipse時遇到了同樣的問題。
在命令行中,一切看起來不錯:
$ python Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sqlite3 >>> import _sqlite3 >>> import sys >>> print(sys.path) ['', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages'] >>>
這段代碼(在應用程序引擎SDK運行),將刪除方程式App Engine數據存儲代碼:
...
logging.info("Python Version: %s" % sys.version)
logging.info(filter(lambda p: 'lib-dynload' in p, sys.path))
import sqlite3
...
它輸出這:
INFO 2013-05-26 05:55:12,055 main.py:38] Python Version: 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] INFO 2013-05-26 05:55:12,055 main.py:40] ['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload'] ERROR 2013-05-26 05:55:12,058 cgi.py:121] Traceback (most recent call last): File "main.py", line 42, in import sqlite3 File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/__init__.py", line 24, in from dbapi2 import * File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/dbapi2.py", line 27, in from _sqlite3 import * File "~/dev/GAE/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 856, in load_module raise ImportError('No module named %s' % fullname) ImportError: No module named _sqlite3
任何想法是什麼問題?謝謝,
科林
完美!我正在運行通過eclipse實際運行linux GAE SDK發行版,但該解決方案在那裏也很好 - 謝謝你的幫助,非常感謝。 – hawkett
很高興幫助。這個問題一直在困擾我很多年! – personalnadir