не может запустить appengine-admin на dev_server - PullRequest
4 голосов
/ 26 апреля 2009

Я решил попробовать этот проект:

http://code.google.com/p/appengine-admin/wiki/QuickStart

Ради эксперимента я взял демонстрационную гостевую книгу, поставляемую с app-engine. Парк импорта выглядит так:

import cgi
import datetime
import wsgiref.handlers

from google.appengine.ext import db
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google import appengine_admin

Модель БД и админ выглядят так

class Greeting(db.Model):

 author = db.UserProperty()
 content = db.StringProperty(multiline=True)
 date = db.DateTimeProperty(auto_now_add=True)

class AdminGreeting(appengine_admin.ModelAdmin):

 model = Greeting
 listFields = ('author','content','date')
 editFields = ('author','content','date')

appengine_admin.register(AdminGreeting)

Все же я получаю это исключение, пытаясь запустить сайт:

File "/home/<username>/python/google_appengine/google/appengine/tools/    dev_appserver.py", line 2875, in _HandleRequest
    base_env_dict=env_dict)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 387, in Dispatch
    base_env_dict=base_env_dict)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 2162, in Dispatch
    self._module_dict)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 2080, in ExecuteCGI
    reset_modules = exec_script(handler_path, cgi_path, hook)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1976, in ExecuteOrImportScript
    exec module_code in script_module.__dict__
  File "/home/<username>/python/google_appengine/demos/guestbook/guestbook.py", line 37, in <module>
    appengine_admin.register(AdminGreeting)
  File "/home/<username>/python/google_appengine/google/appengine_admin/model_register.py", line 120, in register
    modelAdminInstance = modelAdminClass()
  File "/home/<username>/python/google_appengine/google/appengine_admin/model_register.py", line 64, in __init__
    self._extractProperties(self.listFields, self._listProperties)
  File "/home/<username>/python/google_appengine/google/appengine_admin/model_register.py", line 76, in _extractProperties
    storage.append(PropertyWrapper(getattr(self.model, propertyName), propertyName))
  File "/home/<username>/python/google_appengine/google/appengine_admin/model_register.py", line 17, in __init__
    logging.info("Caching info about property '%s'" % name)
  File "/usr/lib/python2.6/logging/__init__.py", line 1451, in info
    root.info(*((msg,)+args), **kwargs)
  File "/usr/lib/python2.6/logging/__init__.py", line 1030, in info
    self._log(INFO, msg, args, **kwargs)
  File "/usr/lib/python2.6/logging/__init__.py", line 1142, in _log
record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra)
  File "/usr/lib/python2.6/logging/__init__.py", line 1117, in makeRecord
rv = LogRecord(name, level, fn, lno, msg, args, exc_info, func)
  File "/usr/lib/python2.6/logging/__init__.py", line 272, in __init__
from multiprocessing import current_process
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1089, in decorate
return func(self, *args, **kwargs)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1736, in load_module
return self.FindAndLoadModule(submodule, fullname, search_path)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1089, in decorate
    return func(self, *args, **kwargs)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1638, in FindAndLoadModule
description)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1089, in decorate
return func(self, *args, **kwargs)
  File "/home/<username>/python/google_appengine/google/appengine/tools/dev_appserver.py", line 1589, in LoadModuleRestricted
description)
  File "/usr/lib/python2.6/multiprocessing/__init__.py", line 83, in <module>
    import _multiprocessing
ImportError: No module named _multiprocessing
INFO     2009-04-25 23:34:27,628 dev_appserver.py:2934] "GET / HTTP/1.1" 500 -

Есть идеи, что могло пойти не так?

Ответы [ 8 ]

4 голосов
/ 26 апреля 2009

Вы, похоже, используете Python 2.6 (учитывая, что некоторые сообщения поступают из файлов в /usr/lib/python2.6 ...!), Но для Google App Engine требуется Python 2.5 (любой 2.5.x подойдет для любые версии x), поэтому вы должны установить и использовать его для запуска App Engine SDK.

3 голосов
/ 15 ноября 2009

Как уже говорили другие, эта проблема возникает в Python 2.6. Я использовал исправление, предложенное в этом комментарии в трекере проблем App Engine :

A quickfix is to create a file in your app's root named `_multiprocessing.py' with 
the contents:

  import multiprocessing

This way it's possible to import the _multiprocessing module.

It worked for me using Python 2.6.2

Cheers,
Kaji
3 голосов
/ 04 августа 2009

Google App Engine поддерживает только Python 2.5, и вы используете более новую версию.

Судя по вашим каталогам, вы можете использовать Linux (или это Mac?). Например, в Ubuntu вы можете «sudo apt-get install python2.5» (это никак не повлияет на ваш Python 2.6), а затем вместо:

<path-to-gae>/dev_appserver.py ...

сделать

python2.5 <path-to-gae>/dev_appserver.py ...

Это лучше, чем просто беспечная разработка на 2.6 и развертывание на 2.5, что, несомненно, потребует хлопот позже.

2 голосов
/ 03 сентября 2009

Чтобы это работало на моей локальной машине (с 2.6) и на GAE, я использовал:

import sys, logging
if sys.version[:3] == "2.6": logging.logMultiprocessing = 0
1 голос
/ 17 мая 2009
import logging
logging.logMultiprocessing = 0

работал для меня

1 голос
/ 05 мая 2009

просто сделайте следующее в верхней части вашего some.py

логирование импорта logging.logMultiprocessing = 0

0 голосов
/ 04 июня 2009
import logging
logging.logMultiprocessing = 0

У меня тоже сработало. Перед загрузкой в ​​GAE прокомментируйте эти строки.

0 голосов
/ 05 мая 2009

Было написано, что я использую GAE с python2.6 (возможно, 2.6.1), и все работает нормально.

Но теперь я получаю ту же ошибку импорта _multiprocess. (Python2.6.2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...