Ошибка ввода-вывода: файл [Errno 13] недоступен в Google AppEngine 1.6.1 - PullRequest
11 голосов
/ 10 января 2012

Может быть, это ошибка, но я все равно пишу здесь.

На локальном тестовом сервере AppEngine возникает следующая проблема:

WARNING  2012-01-10 06:08:40,336 rdbms_mysqldb.py:90] The rdbms API is not available because the MySQLdb library could not be loaded.
INFO     2012-01-10 06:08:40,470 appengine_rpc.py:159] Server: appengine.google.com
INFO     2012-01-10 06:08:40,474 appcfg.py:561] Checking for updates to the SDK.
INFO     2012-01-10 06:08:40,990 appcfg.py:574] Update check failed: HTTP Error 404: Not Found
WARNING  2012-01-10 06:08:47,643 dev_appserver.py:3344] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
INFO     2012-01-10 06:08:47,654 dev_appserver_multiprocess.py:638] Running application dev~project_name on port 8080: http://localhost:8080
INFO     2012-01-10 06:08:47,654 dev_appserver_multiprocess.py:640] Admin console is available at: http://localhost:8080/_ah/admin
INFO     2012-01-10 06:09:14,989 dev_appserver_index.py:338] Created 2 and deleted 0 index(es); total 2
WARNING  2012-01-10 06:09:15,480 py_zipimport.py:139] Can't open zipfile /Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg: IOError: [Errno 13] file not accessible: '/Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg'
ERROR    2012-01-10 06:09:16,927 bottle.py:746] Traceback (most recent call last):
  File "/Users/ca/Dropbox/Perso/projects/project_name/Source/project_name/lib/bottle.py", line 735, in _handle
    return route.call(**args)
  File "/Users/ca/Dropbox/Perso/projects/project_name/Source/project_name/lib/bottle.py", line 1451, in wrapper
    rv = callback(*a, **ka)
  File "/Users/ca/Dropbox/Perso/projects/project_name/Source/project_name/tools.py", line 41, in render_to_response
    template = jinja_env.get_template(template_name)
  File "/Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/jinja2/environment.py", line 719, in get_template
  File "/Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/jinja2/environment.py", line 693, in _load_template
  File "/Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/jinja2/loaders.py", line 115, in load
  File "/Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/jinja2/loaders.py", line 165, in get_source
  File "/Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/jinja2/utils.py", line 224, in open_if_exists
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 578, in __init__
    raise IOError(errno.EACCES, 'file not accessible', filename)
IOError: [Errno 13] file not accessible: '/Users/ca/Dropbox/Perso/Projects/project_name/Source/project_name/templates/tools_list.html'

INFO     2012-01-10 06:09:16,962 dev_appserver.py:2832] "GET / HTTP/1.1" 500 -
INFO     2012-01-10 06:09:16,974 dev_appserver_index.py:255] Updating /Users/ca/Dropbox/Perso/projects/project_name/Source/project_name/index.yaml
WARNING  2012-01-10 06:11:36,153 py_zipimport.py:139] Can't open zipfile /Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg: IOError: [Errno 13] file not accessible: '/Users/ca/.pythonbrew/venvs/Python-2.7.2/project_name/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg'

Возможно, я ошибаюсь, но этокажется, что это проблема, которую я не получал раньше.Так как Google App Engine был выпущен 13 декабря 2011 года;Мне интересно, может ли она прийти из этой версии.

Я использую pythonbrew, virtualenv, Mac Os X 10.6.8

Спасибо за вашу помощь!

Ответы [ 6 ]

14 голосов
/ 11 сентября 2013

У меня есть другой ответ на его проблему, который я испытал сам. Если у вас есть, например, каталог шаблонов, подобный этому:

templates
|-- css
|-- img
|-- js
|-- html

И ваш файл app.yaml выглядит так:

- url: /templates
  static_dir: templates

Вы не можете отобразить шаблон с помощью jinja2, если используете это имя:

JINJA_ENVIRONMENT.get_template('html/index.html')

Я думаю, это потому, что опция static_dir каким-то образом блокирует этот каталог для jinja2, по крайней мере, я так думаю, может быть, это кому-нибудь поможет!

6 голосов
/ 30 мая 2012

Просто удалите файл setuptools-0.6c11-py2.7.egg из пакетов вашего сайта.

Найдите расположение пакетов вашего сайта

Запустить Python CLI:

python

Список пакетов сайта:

>>> import site; site.getsitepackages()
4 голосов
/ 10 января 2012

Вместо того, чтобы ссылаться на мою переменную, используя жестко заданную переменную пути, я теперь использую:

PROJECT_DIR = os.path.dirname(__file__)

И это работает.Я сообщу вам, если проблема вернется (я видел несколько статей, описывающих ее как случайную повторяемость).

Я также применил патч в комментарии 29 к http://code.google.com/p/googleappengine/issues/detail?id=4339

3 голосов
/ 10 июля 2016

может быть поздно, но, возможно, поможет кому-то еще.
поэтому, когда вы добавляете

jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates'))

, не добавляйте
- url: /templates static_dir: templates
кваш app.yaml файл

0 голосов
/ 29 октября 2014

В некоторых случаях эта ошибка вызвана тем, что dev_appserver.py возвращает ошибку вызова open, когда имя файла соответствует шаблону skip_files в app.yaml.Проверяйте app.yaml даже при локальном запуске dev_appserver.py.

0 голосов
/ 23 декабря 2013

Я был озадачен подобной проблемой - IOError при импорте файла / пакета яйца из пакетов сайта. Я использую Ubuntu 13.10, GAE 1.8.8, virtualenv и python 2.7.

В итоге я понял, что не могу импортировать все, что установил, используя easy_install (который по умолчанию помещает файлы egg в site_packages).

Как только я удалил все эти яйца и переустановил с помощью команды pip install , все стало работать нормально.

Надеясь, это сэкономит кому-то еще время, так как я никогда не верну потраченные впустую часы.

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