Не удается получить доступ к внешним библиотекам Google AppEngine - PullRequest
6 голосов
/ 13 мая 2011

Пожалуйста, помогите ... Я запускаю некоторый код на python из cygwin и не могу импортировать API внешних данных GoogleAppEngine (GAE).Я думаю, что это может быть проблема переменной среды.Я могу запустить GAE и «remote_data_api_shell.py» из командной строки, но не могу запустить модуль python, который ссылается на GAE.

Я в режиме проб и ошибок, пробуя каждую комбинацию средыпеременные строки, которые я могу придумать.Ничего не работает, и мое разочарование нарастает.

  1. GAE (1.5) находится в (путь к Windows): C: \ Program Files (x86) \ Google \ google_appengine

  2. Вот моя ошибка Python:

Traceback (последний вызов был последним): Файл "/ cygdrive / c / data / my-program / MyProgram.py ", строка 48, в '<' module '>'

из файла импорта модели MyStoredObject" /cygdrive/c/data/my-program/Model.py ", строка 6, в '<'module'> 'из google.appengine.ext import db ImportError: нет модуля с именем google.appengine.ext

  1. Я устанавливаю переменные среды в моем cygwinфайл bashrc.Мой файл bashrc содержит

    GAE_HOME = "/ cygdrive / c / Program \ Files \ (x86) / Google / google_appengine"

    Я пробовал много комбинаций строк и символов здесь.

    PATH = "$ PATH: $ GAE_HOME

    PYTHONPATH =" $ PYTHONPATH: $ GAE_HOME: $ GAE_HOME / lib / yaml / lib:

    Также пробовал $GAE_HOME/google/appengine/ext иеще много ...

    экспорт PYTHONPATH

    экспорт PATH

    экспорт GAE_HOME

Как я могу сделать эту работу?Что-нибудь очевидное для эксперта GAE, что я здесь делаю неправильно?

Ответы [ 2 ]

6 голосов
/ 13 мая 2011

У меня есть в верхней части скриптов, которые я запускаю, которые должны взаимодействовать с appengine SDK

import sys
import os

# locate app-engine SDK
AE_PATH = "/path/to/sdk/google_appengine/"

# path to app code
APP_PATH = os.path.abspath(".")

# load the AE paths (as stolen from dev_appserver.py)
EXTRA_PATHS = [
    APP_PATH,
    AE_PATH,
    os.path.join(AE_PATH, 'lib', 'antlr3'),
    os.path.join(AE_PATH, 'lib', 'django'),
    os.path.join(AE_PATH, 'lib', 'ipaddr'),
    os.path.join(AE_PATH, 'lib', 'webob'),
    os.path.join(AE_PATH, 'lib', 'yaml', 'lib'),
    os.path.join(AE_PATH, 'lib', 'fancy_urllib'), # issue[1]
]
sys.path = EXTRA_PATHS + sys.path

[1] fancy_urllib проблема

Надеюсь, что это указываетвы в правильном направлении

2 голосов
/ 26 августа 2012

Это должно исправить пути:

sdk_path = "/path/to/sdk/google_appengine/"
sys.path.insert(0, sdk_path)
import dev_appserver
dev_appserver.fix_sys_path()
...