4

更新: これは、OS X 10.8.3 の新規インストールの 1.8.0 App Engine SDK で発生している問題です。

まず最初に - SO には似たようなタイトルの質問がたくさんあります。私はそれらを調べましたが、彼らが私の質問に答えているとは思えません。ほとんどの場合、libsqlite3-dev を取得し、python を再構築して _sqlite3.so を取得することを推奨していますが、それは本来あるべき場所です。

$ find / -name _sqlite3.so
パスワード:
...
/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 2.7.2 (デフォルト、2012 年 10 月 11 日 20:14:37)
[GCC 4.2.1 互換 Apple Clang 4.0 (tags/Apple/clang-418.0.60)] ダーウィンについて
詳細については、「ヘルプ」、「著作権」、「クレジット」、または「ライセンス」と入力してください。
>>> sqlite3 をインポート
>>> _sqlite3 をインポート
>>> システムをインポート
>>> 印刷 (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 で実行) は、式からアプリ エンジン データストア コードを削除します。


...
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 バージョン: 2.7.2 (デフォルト、2012 年 10 月 11 日 20:14:37)
[GCC 4.2.1 互換の 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] トレースバック (最新の呼び出しが最後):
  ファイル「main.py」の 42 行目
    インポートsqlite3
  ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/__init__.py"、24 行目
    dbapi2インポートから *
  ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/dbapi2.py"、27 行目
    _sqlite3 インポートから *
  ファイル "~/dev/GAE/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py"、856 行目、load_module 内
    raise ImportError('%s という名前のモジュールはありません' % fullname)
ImportError: _sqlite3 という名前のモジュールがありません

問題は何ですか?ありがとう、

コリン

4

3 に答える 3