5

我是 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 的版本冲突。

我不知道它到底是什么意思,但我可以解释

  1. 它应该只支持 python 2.5 或
  2. 我应该使用 python 2.5 代码。

因为第二个是不可能的,而且谷歌支持 2.7,我不知道这个错误是什么。

尝试弄清楚自己,但无法成功。

4

11 回答 11

5

我有一个非常相似的问题(在运行教程代码时),并通过检查我的 PythonPath 系统环境变量来解决它。

对我来说,OpenCV 编辑了 PythonPath 变量以指向它自己的目录结构,而不是基础 Python 安装本身。

您可以通过打开“高级系统属性”窗口并单击“环境变量”按钮来编辑环境变量。“系统变量”下的“PythonPath”变量。至少,它应该包含您的 python 可执行文件的路径,例如“C:\Python27\”。

于 2012-06-05T00:18:43.773 回答
2

你试过命令行吗?忘记启动器。我有同样的问题!我多次重新安装 Python,更改了版本。这很有趣。使用 2.5 版本的启动器可以启动服务器,但应用程序不起作用,但我可以通过启动器在线上传。使用 Python 版本。2.7,启动器显示您正在处理的相同问题。我也无法在本地启动服务器。但是命令行运行良好,无论是在本地启动服务器还是在线上传。所以我会坚持使用 2.7 版。希望对你有帮助,告诉我..

于 2012-04-22T22:57:41.813 回答
1

经过 3 小时的努力,我解决了这个问题。重新安装无法解决我的问题,弄乱用户/系统环境变量也不起作用。按照这个步骤工作:

打开 Google Drive Perference,关闭 win 启动后自动运行关闭 Google Drive 或干脆卸载 google drive(Google Drive 似乎使用 Python 2.5 _socket 库

卸载python和GAE重启安装python27和GAE最重要的是指定一个新路径,不要再使用默认的c:\python27(我改成c:\mypython27了。和GAE一样,使用新路径。

然后它再次工作。

于 2013-01-15T08:28:22.257 回答
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,请参阅此官方文档来创建您的第一个“Hello World”应用程序。

于 2012-04-19T06:58:21.587 回答
0

我猜您已将 GAE 路径添加到环境变量 PATH 中?只需将其删除。

我和你有完全相同的问题,在我看来,Python 2.7 会尝试在 GAE 路径下使用不正确的 _socket.pyd 库,从 PATH 中删除 GAE 路径将解决这个问题。

它不需要额外的编码,只需要你的 win 操作系统的一个小配置。由于我的操作系统语言是中文,以下图标/链接的名称是我自己从中文翻译过来的,我不能保证是正确的:(

  1. 右键单击“计算机”图标,选择“属性”,您将看到系统面板显示一些基本系统信息;
  2. 单击“高级系统设置”链接,您将看到包含多个选项卡的系统属性面板;
  3. 选择“高级”选项卡,底部应该有一个名为“环境变量”的按钮,单击它,您可以看到一个显示系统所有环境变量的对话框;
  4. 查找并编辑名为“PATH”或“Path”的变量(不区分大小写):如果其值包含指向您的 GAE 的路径,则删除 GAE 路径。
于 2012-10-01T09:16:42.773 回答
0

你在环境变量中有一个 PYTHONPATH 变量吗?删除它并重新启动 Google App Engine Launcher,它会工作!

于 2014-02-22T02:11:02.260 回答
0

您的 Python 2.7 安装出现了严重问题——其中一部分引用了 Python 2.5 库。你应该卸载你机器上所有版本的 Python,然后重新安装你需要的版本。

于 2012-04-20T00:46:47.100 回答
0

某些程序可能会修改PYTHONPATH环境变量。如果您检查它的值(系统 -> 环境变量)并确保将其设置为正确的 python 2.7 路径(默认 C:\Python27),那么这应该可以解决问题。就我而言,某些东西已将其设置为我的 google appengine 路径。

于 2013-10-28T23:18:49.223 回答
0
ImportError: Module use of python25.dll conflicts with this version of Python.

问题是python25.dll与您的 Python 2.7 安装冲突。这python25.dll来自非常过时的适用于 Windows 的 Google App Engine Launcher,位于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 中获得了启动器,当然谷歌仍然提供了几个版本的 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 跟踪器上有一个问题 #8568,您可以加注星标并发表评论以使其在某一天得到修复。

于 2013-11-20T08:16:51.373 回答
0

我将 PYTHON_PATH 设置为

“C:\Program Files\Google\google_appengine;C:\Program Files\Google\google_appengine\lib\antlr3; C:\Program Files\Google\google_appengine\lib\django_0_96 ;C:\Program Files\Google\google_appengine\lib \fancy_urllib;C:\Program Files\Google\google_appengine\lib\graphy;C:\Program Files\Google\google_appengine\lib\ipaddr;C:\Program Files\Google\google_appengine\lib\simplejson;C:\Program Files \Google\google_appengine\lib\webob;C:\Program Files\Google\google_appengine\lib\yaml\lib"

但后来我意识到 django 0.96 需要 python 2.5,所以使用 django 1.4,它工作正常。

“C:\Program Files\Google\google_appengine;C:\Program Files\Google\google_appengine\lib\antlr3; C:\Program Files\Google\google_appengine\lib\django-1.4 ;C:\Program Files\Google\google_appengine \lib\fancy_urllib;C:\Program Files\Google\google_appengine\lib\graphy;C:\Program Files\Google\google_appengine\lib\ipaddr;C:\Program Files\Google\google_appengine\lib\simplejson;C:\ Program Files\Google\google_appengine\lib\webob;C:\Program Files\Google\google_appengine\lib\yaml\lib"

如果您遇到与上述相同的问题,只需检查 PATH、PYTHON_PATH 以查看库和 python 之间的版本是否不匹配。希望这有帮助。

于 2013-04-24T11:03:32.217 回答
0

对我来说,我确实将系统变量 PYTHONPATH 设置为“.”。删除变量就完成了!

于 2013-02-04T18:03:26.283 回答