我是Google App Engine的新手,因此,我只是按照程序测试了一个只打印“hello world”的应用程序。
(根据Google App Engine文档)
项目文件夹名称为“GoogleApp”
这是我的Python文件:
文件名:sayHello.py
#!/usr/bin/env python
def main():
print "hello"
pass
if __name__ == '__main__':
main()
这是yaml文件
文件名:app.yaml
application: GoogleApp
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: sayHello.py
我刚刚在Google App Engine Launcher中运行该项目时,这是我遇到的日志错误
2012-04-19 10:52:23 Running command: "['C:\\Python27\\pythonw.exe', 'C:\\Program Files\\Google\\google_appengine\\dev_appserver.py', '--admin_console_server=', '--port=8080', 'D:\\Code\\Projects\\IRCmathBot\\GoogleApp']"
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\dev_appserver.py", line 125, in <module>
run_file(__file__, globals())
File "C:\Program Files\Google\google_appengine\dev_appserver.py", line 121, in run_file
execfile(script_path, globals_)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_main.py", line 157, in <module>
from google.appengine.tools import appcfg
File "C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.py", line 41, in <module>
import mimetypes
File "C:\Python27\lib\mimetypes.py", line 29, in <module>
import urllib
File "C:\Python27\lib\urllib.py", line 26, 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.
2012-04-19 10:52:25 (Process exited with code 1)
实际上,我使用的是Python 2.7。上面的日志说python25.dll与python版本冲突。
我不知道究竟是什么意思,但我可以解释
由于第二个是不可能的,谷歌支持2.7,我不知道这是什么错误。
试着找出自己,但不能成功。
答案 0 :(得分:5)
我有一个非常类似的问题(在运行教程代码时),并通过检查我的PythonPath系统环境变量来解决它。
对我来说,OpenCV编辑了PythonPath变量以指向其自己的目录结构,而不是基本的Python安装本身。
您可以通过打开“高级系统属性”窗口并单击“环境变量”按钮来编辑环境变量。 “系统变量”下的“PythonPath”变量。它至少应包含python可执行文件的路径,例如'C:\ Python27 \'。
答案 1 :(得分:2)
您是否尝试过命令行?忘记发射器。 我有同样的问题!我重新安装了Python几次,更改了版本。这很有趣。 使用2.5版启动器可以启动服务器,但应用程序不起作用,但我可以通过启动器在线上传。 使用Python ver。 2.7,启动器显示您正在处理的相同问题。我也无法在本地启动服务器。但是命令行运行良好,既可以在本地启动服务器,也可以在线上传。 所以我会坚持2.7版本。希望它有所帮助,让我知道..
答案 2 :(得分:1)
您启用了线程安全,因此您应该使用WSGI处理程序。这可能是问题所在。我会用以下代码替换你的代码:
文件:helloworld.py
import webapp2
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, WebApp World!')
app = webapp2.WSGIApplication([('/', MainPage)])
文件:app.yaml
application: GoogleApp
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: helloworld.app
如果在Google AppEngine上使用Python2.7,请参阅此官方documentation以创建您的第一个&#34; Hello World&#34;应用
答案 3 :(得分:1)
经过3小时的努力,我解决了这个问题。重新安装无法解决我的问题,弄乱用户/系统环境变量也无法正常工作。 按照此步骤工作:
打开Google云端硬盘优惠,在启动后关闭自动运行 关闭Google云端硬盘 或者只是卸载谷歌驱动器(谷歌驱动器似乎使用Python 2.5 _socket库
卸载python和GAE 重启 安装python27和GAE 最重要的是,指定一个新路径,不要再使用默认的c:\ python27(我将其更改为c:\ mypython27。与GAE相同,使用新路径。
然后再次运作。
答案 4 :(得分:0)
使用Python 2.7安装严重破坏了部分内容 - 部分内容引用了Python 2.5库。您应该在计算机上卸载所有版本的Python,然后重新安装所需的版本。
答案 5 :(得分:0)
我猜你已经将GAE路径添加到环境变量PATH中了?只需删除它。
我遇到了完全相同的问题,在我看来,Python 2.7将尝试在GAE路径下使用不正确的_socket.pyd lib,从PATH中删除GAE路径将解决此问题。
它不需要额外的编码,只需要一个简单的win OS配置。 由于我的操作系统语言是中文,下面的图标/链接名称由我自己翻译,我不能保证是正确的:(
答案 6 :(得分:0)
对我而言,我确实将系统变量PYTHONPATH设置为'。'。删除变量就完成了工作!
答案 7 :(得分:0)
我将PYTHON_PATH设置为
“C:\ Program Files \ Google \ google_appengine; C:\ Program FILES \谷歌\ google_appengine \ LIB \ antlr3; C:\ PROGRAM 文件\谷歌\ google_appengine \ lib中\ django_0_96 强>; C:\程序 FILES \谷歌\ google_appengine \ LIB \ fancy_urllib; C:\ PROGRAM FILES \谷歌\ google_appengine \ LIB \造影; C:\ PROGRAM FILES \谷歌\ google_appengine \ LIB \ IPADDR; C:\ PROGRAM FILES \谷歌\ google_appengine \ LIB \ simplejson; C:\ PROGRAM FILES \谷歌\ google_appengine \ LIB \的WebOb; C:\ PROGRAM 文件\谷歌\ google_appengine \ LIB \ YAML \ LIB“
但后来我意识到django 0.96需要python 2.5,所以使用django 1.4,它运行正常。
“C:\ Program Files \ Google \ google_appengine; C:\ Program FILES \谷歌\ google_appengine \ LIB \ antlr3; C:\ PROGRAM 文件\谷歌\ google_appengine \ lib中\ django的-1.4 强>; C:\程序 FILES \谷歌\ google_appengine \ LIB \ fancy_urllib; C:\ PROGRAM FILES \谷歌\ google_appengine \ LIB \造影; C:\ PROGRAM FILES \谷歌\ google_appengine \ LIB \ IPADDR; C:\ PROGRAM FILES \谷歌\ google_appengine \ LIB \ simplejson; C:\ PROGRAM FILES \谷歌\ google_appengine \ LIB \的WebOb; C:\ PROGRAM 文件\谷歌\ google_appengine \ LIB \ YAML \ LIB“
如果遇到与上述相同的问题,只需检查PATH,PYTHON_PATH以查看库和python之间是否存在不匹配版本。希望这有帮助。
答案 8 :(得分:0)
某些程序可能会修改PYTHONPATH
环境变量。如果你检查它的值(系统 - &gt;环境变量)并确保它设置为正确的python 2.7路径(默认C:\ Python27),那么这应该解决问题。在我的情况下,有些东西已经设置为我的google appengine路径。
答案 9 :(得分:0)
ImportError: Module use of python25.dll conflicts with this version of Python.
问题是python25.dll
与Python 2.7安装冲突。此python25.dll
来自过时的Google App Engine Launcher for Windows,位于C:\Program Files\Google\google_appengine\launcher
这不是你的Python 2.7安装的问题 - 这是Launcher的一个问题,他将自己的Python路径注入应用程序环境。要对此进行测试,请在首次导入后在google_appengine/dev_appserver.py
的顶部添加以下行:
from pprint import pprint
pprint(sys.path)
然后重新运行你的应用程序以获取新的日志并自己查看:
...
'C:\\OpenCV2.3\\opencv\\build\\python\\2.7',
'C:\\Google\\google_appengine\\launcher',
'C:\\Windows\\system32\\python27.zip',
'C:\\Python27\\DLLs',
...
我从Python .msi SDK 1.8.8获得了启动程序,当然还有suxx,谷歌仍然提供了多个版本的SDK和破坏的GUI工具。要解决此问题,请在dev_appserver.py
中首次导入后添加以下内容:
# --- Repair sys.path after broken GAE Windows Launcher
# see http://stackoverflow.com/questions/10222342/
ROOT = os.path.abspath(os.path.dirname(__file__))
LAUNCHPATH = os.path.join(ROOT, 'launcher')
if LAUNCHPATH in sys.path:
sys.stderr.write('[BUG] GAE Windows Launcher detected. Fixing..\n')
sys.path.remove(LAUNCHPATH)
# /--
不幸的是,当新版GAE问世时,您需要重复此过程。 AppEngine跟踪器上有一个issue #8568,你可以加注星标并发表评论,以便有一天修复它。
答案 10 :(得分:0)
环境变量中是否有PYTHONPATH变量?删除它并重新启动Google App Engine Launcher,它会起作用!