Ошибка "Не удается извлечь файл (ы) в кэш яйца" в GAE

У меня Windows 7 и Python 2.7 с установленными настройками.

После того, как я скачал модуль pitz (easy_install pitz), Google App Engine перестал работать:

bad runtime process port ['']

Traceback (most recent call last):
  File "G:\Program Files (x86)\Google\google_appengine\_python_runtime.py", line 184, in <module>
    _run_file(__file__, globals())
  File "G:\Program Files (x86)\Google\google_appengine\_python_runtime.py", line 180, in _run_file
    execfile(script_path, globals_)
  File "G:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\python\runtime.py", line 28, in <module>
    from google.appengine.ext.remote_api import remote_api_stub
  File "G:\Program Files (x86)\Google\google_appengine\google\appengine\ext\remote_api\remote_api_stub.py", line 75, in <module>
    import yaml
  File "G:\Program Files (x86)\Google\google_appengine\lib\yaml-3.10\yaml\__init__.py", line 14, in <module>
    from cyaml import *
  File "G:\Program Files (x86)\Google\google_appengine\lib\yaml-3.10\yaml\cyaml.py", line 5, in <module>
    from _yaml import CParser, CEmitter
  File "C:\Python27\lib\site-packages\pyyaml-3.11-py2.7-win-amd64.egg\_yaml.py", line 7, in <module>
  File "C:\Python27\lib\site-packages\pyyaml-3.11-py2.7-win-amd64.egg\_yaml.py", line 4, in __bootstrap__
  File "C:\Python27\lib\site-packages\pkg_resources.py", line 950, in resource_filename
    self, resource_name
  File "C:\Python27\lib\site-packages\pkg_resources.py", line 1607, in get_resource_filename
    self._extract_resource(manager, self._eager_to_zip(name))
  File "C:\Python27\lib\site-packages\pkg_resources.py", line 1667, in _extract_resource
    manager.extraction_error()
  File "C:\Python27\lib\site-packages\pkg_resources.py", line 996, in extraction_error
    raise err
pkg_resources.ExtractionError: Can't extract file(s) to egg cache

The following error occurred while trying to extract file(s) to the Python egg
cache:

  [Error 5] : 'C:\\Users\\Kostr\\AppData\\Roaming\\Python-Eggs\\pyyaml-3.11-py2.7-win-amd64.egg-tmp\\_yaml.pyd'

The Python egg cache directory is currently set to:

  C:\Users\Kostr\AppData\Roaming\Python-Eggs

Perhaps your account does not have write access to this directory?  You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.

Как решить эту проблему?

2 ответа

От: https://code.google.com/p/modwsgi/wiki/ApplicationIssues

Чтобы избежать этой конкретной проблемы, вы можете установить PYTHON_EGG_CACHE переменная среды кэширования в начале файла сценария приложения WSGI. Переменная среды должна быть установлена ​​в каталог, который принадлежит и / или доступен для записи пользователю, от имени которого работает Apache.

import os
os.environ['PYTHON_EGG_CACHE'] = '/usr/local/pylons/python-eggs' 

Опять же, убедитесь, что это существует. Для пользователей Windows может быть что-то вроде:

os.environ['PYTHON_EGG_CACHE'] = '/tmp'

В качестве альтернативы, если используется mod_wsgi 2.0, можно также использовать директиву WSGIPythonEggs для приложений, работающих во встроенном режиме, или python-eggs опция для директивы WSGIDaemonProcess при использовании режима демона.

Обратите внимание, что вы должны воздерживаться от использования каталогов или файлов, которые были доступны для записи кому-либо, поскольку это может поставить под угрозу безопасность. Также имейте в виду, что при размещении нескольких приложений на одном веб-сервере все они будут работать под одним и тем же пользователем, и поэтому у каждого будет возможность как просматривать, так и изменять файлы друг друга. Если это проблема, вы должны размещать приложения на разных веб-серверах, работающих под разными пользователями или в разных системах. В качестве альтернативы, любые данные, требуемые или обновляемые приложением, должны храниться в базе данных с отдельными учетными записями для каждого приложения.

Похоже, у вас нет прав на запись в каталоги. Удалите pitz и переустановите, используя тег -Z, чтобы установить его как разархивированную версию. Тогда вам не нужно каждый раз извлекать каталог кэша. Это должно решить проблему с каталогами / разрешениями.

Другие вопросы по тегам