Доступ к модулю запрещен изнутри сервера разработки GAE - PullRequest
3 голосов
/ 03 мая 2010

Я занимаюсь разработкой приложения для GAE.

Установив модуль «feedparser» с помощью setuptools, я попытался импортировать его (с помощью «import feedparser»). Однако модуль не загружается, и когда я смотрю журнал отладки dev_appserver.py на экране, я вижу следующее:

Access to module file denied: /usr/local/lib/python2.6/dist-packages/feedparser-4.1-py2.6.egg/feedparser.py

Итак, сервер GAE dev не может получить доступ к модулю, но я не могу понять, почему. Путь правильный и файл доступен.

Я довольно новичок в Python / Django / GAE - что мне не хватает?

Ответы [ 2 ]

6 голосов
/ 04 мая 2010

App Engine запускает код Python в песочнице, и из вашего приложения можно импортировать только авторизованные модули и пакеты стандартной библиотеки.

как уже упоминал @mg, если вы хотите разрешить использование сторонних модулей и пакетов, вам нужно связать их с вашим приложением. чтобы сделать это специально для feedparser, просто перетащите файл feedparser.py в каталог верхнего уровня App Engine (где находятся ваши app.yaml, index.yaml и main.py).

(ОБНОВЛЕНО в октябре 2011 г.) также учитывайте жесткие ограничения:

  • максимальное общее количество файлов (файлов приложений и статических файлов): 3000 (повышено до 10k в 1.5.5, октябрь 2011 г.)
  • максимальный размер приложения или статического файла: 10 МБ (увеличено до 32 МБ в 1.5.5)
  • максимальный общий размер всех приложений и статических файлов: 150 МБ

Если вы хотите сэкономить на общем количестве файлов, вы можете поместить пачку файлов .py в ZIP-файл, чтобы заплатить только за один файл. хотя эта статья немного устарела - рекомендуется объединять Django 1.0, которая теперь включена, - техника объединения модулей и пакетов в ZIP-файлы по-прежнему применяется:

http://code.google.com/appengine/articles/django10_zipimport.html

Официальная страница в документах, где обсуждаются ограничения файла:

http://code.google.com/appengine/docs/python/runtime.html#Pure_Python

(ОБНОВЛЕНО в ноябре 2011 г.): Ссылка ниже содержит список модулей / пакетов Python с белым списком и кодом C для 2.5. Среда выполнения Python 2.7 освобождает многие ограничения настолько, что белый список стал черным списком. Вот разрешенные / занесенные в белый список модули 2.5 C, а также запрещенные / помещенные в черный список модули 2.7 C:

http://code.google.com/appengine/kb/libraries.html

1 голос
/ 03 мая 2010

Поскольку в GAE вы не можете получить доступ к библиотекам, которые не являются частью самого GAE, не включены в GAE, например django 0.96.1, или не являются частью вашего приложения. Установите эту библиотеку и все остальные по тому же пути, что и ваше веб-приложение.

EDIT

Из документации :

Вы можете включить другой чистый Python библиотеки с вашим приложением положить код в вашем приложении каталог. Если вы сделаете символическую ссылку в каталог модуля в вашем каталог приложения, appcfg.py будет перейдите по ссылке и включите модуль в вашем приложении.

Модуль Python включает путь включает в себя корень вашего приложения каталог (каталог, содержащий файл app.yaml). Модули, которые вы создаете в корневом каталоге вашего приложения доступны с использованием пути из корень. Не забудьте создать init .py файлы в подкаталогах, поэтому Python распознает подкаталоги в виде пакетов.

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