2012-04-19 79 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啓動器,它將起作用!