4

我是 Python 的初学者,在我的机器上本地运行我的 python googleppengine 代码时遇到了很大的困难。

我的代码如下所示:

import json
import urllib
import os
import webapp2
from google.appengine.ext.webapp import template
import datetime
from google.appengine.ext import db


class Events(db.Model):
    venue_name = db.StringProperty()
    address = db.StringProperty()
    id = db.StringProperty()
    venue_id = db.StringProperty()

    # hire_date = db.DateProperty()
    # attended_hr_training = db.BooleanProperty()

class eventSearch(webapp2.RequestHandler):  
    def get(self):
        base_url = 'http://api.eventful.com/json/events/search?app_key=zGtDX6cwQjCRdkf6&l=dublin&?q=music'
        response = urllib.urlopen(base_url)
        html = response.read()
        html = json.loads(html)
        result = html['venues']
        result1 = result['venue']

当我在 cmd 提示符下使用命令“python file.py”运行此代码时,我收到以下错误:

Traceback <most recent call last>:
File "file.py", line 4, in <module>
import webapp2
ImportError: No module named 'webapp2'

我有 1. 按照如何在 Windows 中添加到 pythonpath 中的建议创建了一个 PythonPath ? 在我的带有目录的系统变量中:C:\Python33\DLLs;C:\Python33\Lib;C:\Python33\Lib\lib2to3;C:\Program Files (x86)\Google\google_appengine;C:\Program Files (x86 )\谷歌\google_appengine\lib;

然后,我还将以下两个目录添加到我的“PATH”变量中,正如答案中所建议的那样 - 即使我没有安装 webapp2,import webapp2 也适用于 google-app-engine
C:\Program Files (x86)\ Google\google_appengine\;C:\Program Files (x86)\Google\google_appengine\lib

编辑:在提供的答案中提出建议后,我也意识到 GAE 不支持 Python 3.3 版,我在我的问题的前一部分中尝试使用它来运行它。在卸载 Python33 并改为安装 Python27,更改我的系统变量以反映新的 Python27 之后,我仍然遇到问题,并且我的代码无法使用 GAE 启动器上传。我在我的日志控制台(GAE 启动器)中收到以下错误:

2013-04-14 22:59:19 Running command: "['C:\\Python27\\pythonw.exe', 'C:\\Program Files (x86)\\Google\\google_appengine\\dev_appserver.py', '--skip_sdk_update_check=yes', '--port=8080', '--admin_port=8001', 'C:\\Users\\Karen\\Desktop\\Development\\projects\\file']"
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\dev_appserver.py", line 193, in     <module>
    _run_file(__file__, globals())
  File "C:\Program Files (x86)\Google\google_appengine\dev_appserver.py", line 189, in _run_file
    execfile(script_path, globals_)
  File "C:\Program Files     (x86)\Google\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 30, in <module>
    from google.appengine.datastore import datastore_stub_util
  File "C:\Program Files     (x86)\Google\google_appengine\google\appengine\datastore\datastore_stub_util.py", line 45,     in <module>
    from google.appengine.api import api_base_pb
  File "C:\Program Files     (x86)\Google\google_appengine\google\appengine\api\api_base_pb.py", line 20, in <module>
    from google.net.proto import ProtocolBuffer
  File "C:\Program Files (x86)\Google\google_appengine\google\net\proto\ProtocolBuffer.py", line 22, in <module>
    import httplib
  File "C:\Python27\lib\httplib.py", line 71, in <module>
    import socket
  File "C:\Python27\lib\socket.py", line 47, in <module>
    import _socket
ImportError: Module use of python25.dll conflicts with this version of Python.
2013-04-14 22:59:21 (Process exited with code 1)

感谢您为我提供的任何帮助。

4

4 回答 4

3

您不应该安装 webapp2。它包含在 SDK 中,并且已经在生产运行时中。

阅读配置作为 appengine 环境一部分的库https://developers.google.com/appengine/docs/python/python25/migrate27#Configuring_Libraries

这是包含的第 3 方库的列表。

https://developers.google.com/appengine/docs/python/tools/libraries27

如果您将 pip/easy_install 用于其他各种库,您会发现它本身是不够的。您需要在项目中链接或包含这些库,操作 sys.path 以便可以找到它们,并确保已部署这些库。

于 2013-04-14T12:46:27.173 回答
1

这解决了我的问题(同样的问题)

首先不要尝试从 python IDLE 运行从谷歌应用引擎运行打开 localhost:port

如果仍然显示相同的错误,请在 GAE 中打开登录,请尝试以下步骤

  1. 检查您的 python 版本 2.7.X 或 3.X
  2. 如果 3.x 安装 2.7.8
  3. 然后打开谷歌应用引擎控制台并转到编辑>首选项
  4. 将您的 python27 目录(例如:C:\Python27\pythonw.exe)添加到 PythonPath 单击确定
于 2015-01-30T07:12:38.727 回答
0

看起来appengine/tools/devappserver2/python/sandbox.py应该C:\path\to\google_appengine\google变成C:\path\to\google_appengine.,但是有一个额外的目录名,所以它最终得到C:\path\to. 我不确定为什么它只会在某些情况下引起问题。

您可以通过更改来解决此问题:

library_pattern = os.path.join(os.path.dirname(
    os.path.dirname(google.__file__)), _THIRD_PARTY_LIBRARY_FORMAT_STRING)

至:

library_pattern = os.path.join(
    os.path.dirname(google.__file__), _THIRD_PARTY_LIBRARY_FORMAT_STRING)

raise Exception(sys.path)我通过在应用程序引擎代码中的各个位置并重新启动开发服务器发现了这个问题。

于 2016-07-17T05:26:20.190 回答
-2

您可以使用 pip 或 easy_install 安装 webapp2。请参阅http://webapp-improved.appspot.com/tutorials/quickstart.nogae.html快速了解

于 2013-04-14T12:32:19.563 回答