Python上的Google App Engine“ImportError:没有名为google.appengine.ext的模块”

时间:2012-02-09 01:32:00

标签: python google-app-engine google-cloud-storage

我正在尝试为Google Cloud设置python源文件。 我在MAC OS 10.6上安装了GSUtil,并按照页面上的说明设置文件路径 将此命令(导出PYTHONPATH = $ {PYTHONPATH}:$ HOME / gsutil / boto:$ HOME / gsutil)添加到主目录下的.bash_profile。

然后,我运行了以下代码:

#!/usr/bin/python

import StringIO
import os
import shutil
import tempfile
import time
from oauth2_plugin import oauth2_plugin

import boto

# URI scheme for Google Cloud Storage.
GOOGLE_STORAGE = 'gs'
# URI scheme for accessing local files.
LOCAL_FILE = 'file'

而且,编译器给我一个错误说

>>> [evaluate gs.py]
Traceback (most recent call last):
  File "/Volumes/WingIDE-101-4.0.0/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 8, in <module>
  File "/Users/lsangin/oauth2_plugin.py", line 18, in <module>
  File "/Users/lsangin/google_appengine/cloudauth/oauth2client/appengine.py", line 24, in <module>
    from google.appengine.ext import db
ImportError: No module named google.appengine.ext
>>> from google.appengine.ext

有人可以帮我解决这个问题吗? (对不起,我是新手!) 提前谢谢。

4 个答案:

答案 0 :(得分:1)

当您将代码作为Google App Engine应用程序运行或部署时,AE工具会确保您可以访问AE特定模块(例如google.appengine.ext),但听起来您尝试运行此脚本作为一个独立的程序,在app引擎之外。如果是这样,您可能不需要 appengine模块(很难说没有看到更多的代码)。如果我是正确的,这是一个在AE外部运行的小测试代码,请尝试注释导入和对丢失模块的引用。完成后,如果/当您准备好在应用引擎(本地开发环境或托管服务)下尝试您的程序时,请取消注释该代码。

答案 1 :(得分:0)

您是否将oauth2_plugin.py移动(或复制)到另一个地方?您在该堆栈跟踪中显示的内容显示cloudauth/oauth2_plugin.py(这是与app引擎一起使用的插件),而不是oauth2_plugin/oauth2_plugin.py(可能是您想要的那个)。

你的完整PYTHONPATH是什么?

答案 2 :(得分:0)

听起来你输入了错误的oauth2_plugin,因为gsutil / oauth2_plugin中的那个不依赖于app引擎。

我遇到了同样的问题,因为我之前使用gsutil / cloudauth / oauth2_plugin.py进行了测试,但它仍处于PYTHONPATH状态。

尝试使用以下方法刷新PYTHONPATH:

PYTHONPATH=""
source ~/.bashrc

答案 3 :(得分:0)

我有同样的问题 - 我通过在PYTHONPATH中添加一个目录来解决它:https://stackoverflow.com/a/19019234/1741654