【问题标题】:Error importing simplejson after upgrading to appengine dev server 1.7.6升级到 appengine 开发服务器 1.7.6 后导入 simplejson 时出错
【发布时间】:2013-04-02 04:21:35
【问题描述】:

我刚刚在 OS X 上升级到 App Engine Python 开发服务器版本 1.7.6,升级后,我在尝试运行我的应用时收到以下错误:

ERROR    2013-04-02 04:05:14,268 wsgi.py:219] 
Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 196, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 255, in _LoadHandler
    handler = __import__(path[0])
  File "/Users/rmorlok/Dropbox/ryanroot/ryan-projects/Development/docalytics/online/main.py", line 13, in <module>
    from google.appengine.tools import dev_appserver
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 62, in <module>
    import simplejson
ImportError: No module named simplejson

我确保通过运行安装了simplejson

sudo pip install simplejson

成功完成。如果我在控制台上运行 Python 并导入它,我可以成功导入 simplejson,但是当通过 PyCharm 或 GoogleAppengineLaunch 运行我的应用程序时,出现上述错误。

有人知道怎么回事吗?

【问题讨论】:

  • 问题似乎来自我正在导入 dev_appserver 本身(来自 google.appengine.tools import dev_appserver)以获取某些实用程序的行。删除该行似乎可以避免该问题。
  • 你现在运行的是python 2.7,所以你可以只导入json而不是simplejson,
  • 是的,在我的代码中我实际上只是导入了 json。导入simplejson其实在google的开发应用服务器代码中。
  • Pip install 无济于事。您需要将 simplejson 复制到您的项目中。你在 1.7.6 中遇到这个问题很奇怪,它应该会影响到每个人。
  • 同样的问题,1.7.7 也没有修复。我不得不退回到 1.7.5 才能让它消失。有什么问题的线索:当我从 dev_appserver.py 中删除 import simplejson 行时,我得到一个单独的 ImportError: No module named antlr3/Applications/GoogleAppEngineLauncher.app/..../appengine/cron/groc.py 提出

标签: python google-app-engine


【解决方案1】:

SimpleJson 在最新版本之一中已重命名为 Json。如果您不更新到最新版本的 simplejson,您将不会遇到此问题。因此,您可以恢复到早期版本,或者您可以将以下内容添加到给出问题的 python 文件的顶部:

import json as simplejson

在您安装 App Engine SDK for python 时,可能 Google 对版本有一些要求。

【讨论】:

    【解决方案2】:

    此问题可能是版本冲突或sys.path配置错误造成的。 以下是一些建议:

    • 确保您只安装了一个版本的 sdk。你可能有 两个版本安装在/usr/local/google_appengine/Applications/GoogleAppEngineLauncher.app/
    • 重新安装 appengine 后,在 /Applications/GoogleAppEngineLauncher.app/ 默认创建一个 /usr/local/google_appengine 中的符号链接创建符号链接时, 检查权限并确保您的系统变量设置为 需要,这个主题可能会有所帮助 Configuring App Engine path for PyDev on Mac
    • 使用 pycharm 时,请确保您已启用 appegine 支持。
    • 如果您使用的是 virtualenv,请确保 appengine 位于 sys.path 中。
    • 您可以尝试将 $APPENGINEPATH/lib 添加到 sys.path
    • 如果此问题仍然存在,请了解您使用的是哪个服务器 dev_appserver 或 dev_appserver2,详见release notes

    如果没有任何帮助,您需要深入挖掘。出于我们的目的,我们在项目中定制了启动器版本(以避免一些员工在标准库中使用 appengine sdk 存根)。这里是http://pastebin.com/iU2PsGhE

    环境设置由这些步骤完成(在我们的例子中和在 sdk 中):

    1. 找到 appengine 根目录。
    2. Fid DIR_PATH,由于某种原因是 $APPENGINEPATH/lib/ipaddr
    3. 导入位于 $APPENGINEPATH/lib/ 中的第三方库的正确版本

    如果以上没有任何帮助,请随时评论此答案,我们会找到解决方案。

    【讨论】:

      【解决方案3】:

      如果您使用的是 eclipse,您必须在控制台上pip install simplejson,然后重置您的 python 解释器。为此,您必须:

      1. 右键单击您的 PyDev 项目并单击属性
      2. 在左侧窗格中选择 python 解释器/语法
      3. 点击显示配置解释器的蓝色链接
      4. 点击右上角的删除,然后自动配置
      5. 如果自动配置不起作用,请手动在 python 安装文件夹中找到您的 python.exe

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-27
        • 2019-05-14
        • 2014-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多