2013-03-23 72 views
2

進出口測試我main.py GAE應用程序時收到此錯誤:谷歌應用程序引擎:「無模塊命名google.appengine.ext」

Traceback (most recent call last): 
    File "main.py", line 4, in <module> 
    from google.appengine.ext import db 
ImportError: No module named google.appengine.ext 

我讀了很多關於它,但我不能找到回答...任何想法或幫助? 謝謝你們!

+1

你在'/ usr/local/google_appengine/google/appengine'中看到了什麼?嘗試重新安裝SDK可能是值得的。 – 2013-03-23 22:49:15

+0

我看到12項:一些文件夾和2 _init文件,我應該unistall appenginelauncher並重新安裝它?謝謝! – askingdoesntkill 2013-03-23 23:04:12

+0

當然,它不會傷害。 – 2013-03-23 23:18:31

回答

2

這不是問題的答案,但你可以嘗試添加以下代碼調試:

import logging 

import google 

logging.info("google path: {}.".format(google.__file__)) 

比較此路徑的App Engine SDK的位置。

9

我在測試我的應用程序時遇到了同樣的問題。我發現我的/usr/local/google_appengine包含google python模塊,所以我將該路徑添加到我的$PYTHONPATH環境變量中。您可以通過2種方式完成此操作:

  1. 在您的控制檯中,鍵入export PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine"。這會將它添加到您的PYTHONPATH中以用於此控制檯會話。

  2. 在你的shell配置文件(或許~/.bash_profile),加上這樣一行:

    export PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine" 
    

    然後要麼打開一個新的控制檯會話或source ~/.bash_profile重新加載您的個人資料(或任何你的文件)

您可能需要修改這個因爲)你的「google_appengine」文件夾是在不同的位置(不/usr/local)或b)您的操作系統的不同而分離路徑(我認爲Windows使用;而不是: - 我在Mac上)

+1

所以這對我很有效,但我不得不'然後'pip安裝'每個缺失的庫。它沒有提供所有的GAE內建庫(例如Jinja2)。因此,解決具體問題的榮譽,但更大的問題仍未解決。 Google tho的弱點,因爲儘管遵循安裝說明似乎很多人都遇到了這個問題... – Ben 2014-05-16 19:42:24

6

我想添加一個我遇到過的情況。我的操作系統是MAC。

Google App Engine將創建一個鏈接/usr/local/google_appengine

我將上面的路徑添加到PYTHONPATH,它仍然不起作用。一些線索後,我發現我已經安裝了protobuf的這也是下開發谷歌,請

https://developers.google.com/protocol-buffers/docs/pythontutorial

這將在side_packages還被評爲google創建一個文件夾。所以如果你嘗試import google,它實際上是導入protobuf

因此,對於這一個可能的解決方案是臨時卸載protobuf的

pip uninstall protobuf

+0

與google-apputils相同https://pypi.python.org/pypi/ google-apputils – 2015-08-10 20:34:35

+0

這對我工作感謝! – 2016-02-08 09:05:58

1

下面的代碼將打印所有谷歌的Python的lib路徑

import google 
print "google path: {}.".format(google.__path__) 

在我的機器打印運行這段代碼

google path: ['/usr/local/Cellar/protobuf/2.6.1/libexec/lib/python2.7/site-packages/google', '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/google'].

這與尋找谷歌appengine安裝目錄不一樣。 我的Mac上,安裝程序會創建符號鏈接

/usr/local/google_appengine 

櫃面你的單元測試,你可能需要的路徑添加到您的代碼

import sys 
sys.path.insert(1, '/usr/local/google_appengine') 
sys.path.insert(1, '/usr/local/google_appengine/lib/yaml/lib') 
4

看來,從目錄/google_appengine來的問題這並不總是在正確的位置,所以Python無法找到它(通過PYTHONPATH)。

  1. 找到google_appengine目錄的位置運行

    find/-name google_appengine -type d

  2. 一旦你發現它(例如:/usr/lib/google-cloud-sdk/platform/google_appengine),運行:

    export PYTHONPATH=:/usr/lib/google-cloud-sdk/platform/google_appengine

這解決了問題。

相關問題