2011-01-29 10 views
1

開発サーバーでデータストアadminにアクセスしようとすると、 "ImportError:No module simplejson"というメッセージが表示されます。sdkデータストアにアクセスしようとしたときにインポートエラーが発生しました

初めてこのエラーが発生したので、私はslackbuildsからsimplejsonパッケージをインストールしました(私はSlackwareにあります)。正常に動作しているようですが、pythonコンソールにエラーのないsimplejsonモジュールをインポートできます。

モジュールをインストールした後でも、データストアadminにアクセスしようとすると、インポートエラーが引き続き発生します。開発サーバーを再起動しても何もしませんでした。

何が間違っている可能性がありますか?

編集:ここでのスタックトレースです:

Traceback (most recent call last):
File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 3245, in _HandleRequest self._Dispatch(dispatcher, self.rfile, outfile, env_dict) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 3186, in _Dispatch base_env_dict=env_dict) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 531, in Dispatch base_env_dict=base_env_dict) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 2410, in Dispatch self._module_dict) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 2320, in ExecuteCGI reset_modules = exec_script(handler_path, cgi_path, hook) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 2216, in ExecuteOrImportScript exec module_code in script_module.dict File "/home/lwlun/AppEngine/google_appengine/google/appengine/ext/datastore_admin/main.py", line 30, in from google.appengine.ext.datastore_admin import copy_handler File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1945, in load_module return self.FindAndLoadModule(submodule, fullname, search_path) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1847, in FindAndLoadModule description) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1798, in LoadModuleRestricted description) File "/home/lwlun/AppEngine/google_appengine/google/appengine/ext/datastore_admin/copy_handler.py", line 40, in from google.appengine.ext.datastore_admin import utils File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1945, in load_module return self.FindAndLoadModule(submodule, fullname, search_path) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1847, in FindAndLoadModule description) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1798, in LoadModuleRestricted description) File "/home/lwlun/AppEngine/google_appengine/google/appengine/ext/datastore_admin/utils.py", line 35, in from google.appengine.ext.mapreduce import control File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1945, in load_module return self.FindAndLoadModule(submodule, fullname, search_path) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1847, in FindAndLoadModule description) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1798, in LoadModuleRestricted description) File "/home/lwlun/AppEngine/google_appengine/google/appengine/ext/mapreduce/control.py", line 26, in from google.appengine.ext.mapreduce import handlers File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1945, in load_module return self.FindAndLoadModule(submodule, fullname, search_path) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1847, in FindAndLoadModule description) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1295, in Decorate return func(self, *args, **kwargs) File "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", line 1798, in LoadModuleRestricted description) File "/home/lwlun/AppEngine/google_appengine/google/appengine/ext/mapreduce/handlers.py", line 26, in import simplejson ImportError: No module named simplejson

+0

複数のバージョンのPythonをインストールできますか? –

+0

私が知る限り、SlackwareにはすでにPythonが付属しています。自分で別のバージョンをインストールしたことはありません。複数のバージョンがあるかどうかを確認するにはどうすればよいですか? –

+0

@David 'ls/usr/bin | grep python'はインストールされているすべてのバージョンを通知します。 – new123456

答えて

0

私は同様の問題の解決策が見つかりました:ImportError when using Google App Engine

アプリのディレクトリにモジュールをコピーするには働いていたが、それはちょっと安い回避策のように感じています。

2

from django.utils import simplejsonを使用してください。

dev_appserverは本番環境を模倣しています。システムレベルでインストールするものはスクリプトにインポートすることはできません。そのため、テストでは正常に動作し、展開するとすばらしく失敗します。しかし、この特定のモジュールをバンドルする必要はありません。これは、本番環境にインストールされているdjangoパッケージ(およびSDK)で既に利用可能であるためです。

通常、アプリケーションディレクトリに外部ライブラリを含める必要がありますが、インストールされた場所からシンボリックリンクすることはできますが、通常は正常に動作します(デプロイ時に本番環境にデプロイされます)。 App EngineのSDKのlibで

+0

sdkでも利用可能な場合は、なぜそれがインポートエラーを出していたのですか?エラーはdev_appserverからのものです。 –

+0

'django.utils'の部分が必要です。単純に 'import simplejson'を使うと動作しません。 – geoffspear

+0

私はdev_appserver.pyコードを調べました。そこには「import simplejson」はありません。しかし、os.path.join(DIR_PATH、 'lib'、 'simplejson') 'という行があります。これは、他のいくつかのモジュールを含むリスト宣言の一部です。私はこの行をコメントし、 'django.utils import simplejson'からスクリプトに追加するべきですか?私はsdkに付属のファイルが改ざんされるべきではないと感じています。 –

0

それならば、例えばMac上でそれが

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/

だが働くだろうアプリのディレクトリにそれを上にコピーします。これは、pipインストールよりも優れており、c-extensionが含まれている可能性があります。 SDKのlibパス(少なくともsimplejson)のモジュールは、アプリエンジンの必要性を満たすように変更されているようです。

関連する問題