2012-04-19 78 views
5

我是Google App Engine的新手,所以我只是按照程序来测试打印“hello world”的应用程序。运行Google App Engine测试项目时导入错误

项目文件夹名称是 “GoogleApp”

这是我的Python文件(根据谷歌App Engine文档遵循):

文件名:sayHello.py

#!/usr/bin/env python 

def main(): 
    print "hello" 
    pass 

if __name__ == '__main__': 
    main() 

这个yaml文件

File Na我:app.yaml的

application: GoogleApp 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: sayHello.py 

当过我只是运行在谷歌应用程序引擎启动该项目,这是我得到

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. 应该要么支持2.5或
  2. 它,我应该用Python 2.5的代码只蟒蛇。

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

试图找出自己,但不能成功。

回答

0

你的Python 2.7安装中有些问题严重破坏 - 它的一部分引用了Python 2.5库。你应该在你的机器上卸载所有版本的Python,并重新安装你需要的版本。

+0

这不是Python 2.7安装中的问题 - 这是启动器的问题。 – 2013-11-20 07:51:17

+0

@techtonik启动器没有(或者至少没有)捆绑Python;这个问题与Python本身有关。 – 2013-11-20 09:52:04

+0

没有绑定的python25.dll,启动程序将无法工作,因为它使用针对此lib编译的wxPython绑定。 – 2013-11-20 09:55:03

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 

如果谷歌AppEngine上使用Python2.7,请参阅本官documentation创建您的第一个“Hello World”应用程序。

+0

即使没有线程安全声明,我也尝试过。但是,它没有工作! – Surya 2012-04-19 10:04:51

+0

您的代码基于哪些文档?如果您使用的是Python2.7,官方开始使用的文档是https://developers.google.com/appengine/docs/python/gettingstartedpython27/helloworld ...您提供的代码看起来并不像您所基于的那样从这些文档。也许你基于Python25文档。 – Albert 2012-04-19 10:16:13

+0

其实,它来自“Head First Python”.. – Surya 2012-04-19 10:19:26

2

你在命令行尝试过吗?忘了发射器。 我有同样的问题!我重新安装了Python几次,改变了版本。这很搞笑。 随着版本2.5启动器可以启动服务器,但应用程序不起作用,但我可以通过启动器在线上传它。 随着Python版本。 2.7,启动器显示你正在处理的同样的问题。我也无法获得本地启动的服务器。但是命令行运行良好,无论是在本地启动服务器还是在线上传。 所以我会坚持使用2.7版。希望它有帮助,让我知道..

5

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

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

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

+0

我和PYTHONPATH有同样的问题。在我的情况下,有一个链接到Mapnik。当我删除链接时,Google App Engine运行良好。 – 2012-10-06 19:31:38

0

我想你已经将GAE路径添加到环境变量PATH中了吗?只要删除它。

我有完全相同的问题与你,在我看来是Python 2.7版将尝试使用不正确的_socket.pyd的lib下GAE路径,从通道中取出GAE路径将解决这个问题。

它不需要额外的编码,只是你的双赢操作系统的一个微小的配置。 因为我的操作系统语言是中国人,图标/链接名称下面是我自己中国人,翻译,我不能保证是正确的:(

  1. 右键单击“计算机”图标,选择“属性”,你会看到系统显示面板的一些基本的系统信息;
  2. 点击“高级系统设置”链接,你会看到系统属性面板包含几个选项卡;
  3. 选择“高级”选项卡上,应该有在底部点击一个名为“环境变量”的按钮,点击它,你会看到一个对话框,显示系统的所有环境变量;
  4. 查找并编辑名为“PATH”或“Path”的变量(不区分大小写):如果其值包含GAE的路径,则删除GAE路径。
+2

究竟如何?你能显示一些代码吗? – Surya 2012-10-01 12:15:53

1

我以后的工作3个小时解决了这个问题。重新安装不能解决我的问题,搞乱用户/系统环境变量也不起作用。 按照这个步骤的工作:

打开谷歌驱动器亲景,获胜之后关闭自动运行启动 关闭谷歌驱动 或者干脆卸载谷歌驱动器(谷歌驱动器似乎使用Python 2.5 _socket库

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

。然后再次运作。

0

对我来说,我确实把系统变量PYTHONPATH设置为'。'。删除变量做了这个工作!

0

我设置PYTHON_PATH到

“C:\ Program Files文件\谷歌\ google_appengine; C:\ PROGRAM 文件\谷歌\ google_appengine \ LIB \ antlr3; C:\ PROGRAM 文件\谷歌\ 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 \ go ogle_appengine \ LIB \的WebOb; C:\ PROGRAM 文件\谷歌\ google_appengine \ LIB \ YAML \ LIB”

但后来我意识到,Django的0.96需要Python 2.5的,所以使用Django 1.4,并能正常工作。

“C:\ Program Files文件\谷歌\ google_appengine; C:\ PROGRAM 文件\谷歌\ google_appengine \ LIB \ antlr3; C:\ PROGRAM 文件\谷歌\ 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之间是否有不匹配的版本。希望这个帮助。

0

某些程序可能会修改PYTHONPATH环境变量。如果你检查它的值(系统 - >环境变量),并确保它被设置为正确的Python 2.7路径(默认C:\ Python27),那么这应该解决这个问题。在我的情况下,它已将其设置为我的谷歌appengine路径。

0
ImportError: Module use of python25.dll conflicts with this version of Python. 

问题是python25.dll与您的Python 2.7安装冲突。这python25.dll来自大大过时的谷歌应用程序引擎启动了Windows和位于C:\Program Files\Google\google_appengine\launcher

这不是你的Python 2.7的问题安装 - 这是启动的问题,谁注入了自己的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仍然会推出几个带有破坏GUI工具的SDK版本。为了解决这个问题,添加下面的第一进口后在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,您可以为其加注星标并进行评论,以便将来某一天进行修复。

0

环境变量中是否有PYTHONPATH变量?删除它并重新启动Google App Engine启动器,它将起作用!