我是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']
当我使用命令“python file.py”在我的cmd提示符中运行此代码时,收到以下错误:
Traceback <most recent call last>:
File "file.py", line 4, in <module>
import webapp2
ImportError: No module named 'webapp2'
我有1.在我的系统变量中使用目录在How to add to the pythonpath in Windows?中建议创建一个PythonPath: C:\ Python33 \ DLLs; C:\ Python33 \ Lib; C:\ Python33 \ Lib \ lib2to3; C:\ Program Files(x86)\ Google \ google_appengine; C:\ Program Files(x86)\ Google \ google_appengine \ lib ;
我还将以下两个目录也添加到我的“PATH”变量中,如答案中所建议的那样 - import webapp2 works on google-app-engine even though I don't have webapp2 installed
C:\ Program Files(x86)\ Google \ google_appengine \; C:\ Program Files(x86)\ Google \ google_appengine \ lib
编辑: 在提供答案的建议后,我也意识到GAE不支持Python的3.3版本,我试图在我的前一部分问题中运行它。 在卸载Python33并安装Python27之后,更改我的系统变量以反映新的Python27,我仍然遇到问题,我的代码将无法使用GAE启动器上传。 我在日志控制台(GAE Launcher)中收到以下错误:
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)
感谢您提供的任何帮助。
答案 0 :(得分:3)
您不应安装webapp2。它包含在SDK中,并且已经在生产运行时中。
阅读配置作为appengine环境https://developers.google.com/appengine/docs/python/python25/migrate27#Configuring_Libraries
一部分的库以下是包含的第三方库的列表。
https://developers.google.com/appengine/docs/python/tools/libraries27
如果你将pip / easy_install用于其他各种库,你会发现它本身就不够用。您需要在项目中链接或包含这些库,操作sys.path以便找到它们,并确保部署这些库。
答案 1 :(得分:1)
这解决了我的问题(你遇到同样的问题)
首先不要试图从谷歌应用程序引擎打开localhost:port
运行python IDLE如果仍然显示相同的错误,请在GAE中打开登录尝试以下步骤
答案 2 :(得分:0)
看起来appengine/tools/devappserver2/python/sandbox.py应该将C:\path\to\google_appengine\google
转换为C:\path\to\google_appengine
,但还有一个额外的dirname,因此它最终得到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)
放在应用引擎代码中的不同位置并重新启动开发服务器来发现此问题。
答案 3 :(得分:-2)
您可以使用pip或easy_install安装webapp2。请参阅http://webapp-improved.appspot.com/tutorials/quickstart.nogae.html以获得快速明确的