Tom*_*ohl 3 python django permissions google-app-engine
我正在为GAE开发一个应用程序.
使用setuptools安装了"feedparser"模块后,我尝试导入它(使用"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
Run Code Online (Sandbox Code Playgroud)
所以GAE dev服务器无法访问该模块,但我无法弄清楚原因.路径正确,可以访问该文件.
我是Python/Django/GAE的新手 - 我错过了什么?
App Engine在沙箱中运行Python代码,只能从您的应用程序导入授权的标准库模块和包.
正如@mg所提到的,如果你想允许第三方模块和软件包,你需要将它们与你的应用程序捆绑在一起.要做到这一点专门为feedparser,只是下降feedparser.py的文件到您的顶级应用程序引擎目录(其中你app.yaml,index.yaml和main.py所在的位置).
(2011年10月更新)也牢记硬限制:
如果你想节省文件总数,你可以把一大堆.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年11月更新):下面的链接包含一个列有白名单的Python模块/包,其中包含2.5的C代码.Python 2.7运行时释放了许多限制,以至于白名单已成为黑名单.以下是允许/列入白名单的2.5 C模块以及不允许/列入黑名单的2.7 C模块:
http://code.google.com/appengine/kb/libraries.html