Google Identity Toolkit(v3)是否与GAE/python沙盒兼容?
我正在为一个网站开发一个PythonGAE应用程序,并试图让联邦登录进入其中 根据调查,网站的最佳解决方案似乎是。浏览了我能找到的所有相关文档,然后转到教程,在那里我遇到了一个问题-安装Google Identity Toolkit(v3)是否与GAE/python沙盒兼容?,python,google-app-engine,google-identity-toolkit,Python,Google App Engine,Google Identity Toolkit,我正在为一个网站开发一个PythonGAE应用程序,并试图让联邦登录进入其中 根据调查,网站的最佳解决方案似乎是。浏览了我能找到的所有相关文档,然后转到教程,在那里我遇到了一个问题-安装identity toolkit python client包失败,出现了与cffi库相关的C编译错误,类似于此: # python -m pip install identity-toolkit-python-client ... gcc -pthread -fno-strict-aliasing -fmess
identity toolkit python client
包失败,出现了与cffi库相关的C编译错误,类似于此:
# python -m pip install identity-toolkit-python-client
...
gcc -pthread -fno-strict-aliasing -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -DNDEBUG -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -DOPENSSL_LOAD_CONF -fPIC -I/usr/include/python2.7 -c src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.c -o build/temp.linux-x86_64-2.7/src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.o
src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.c:2:20: fatal error: Python.h: No such file or directory
#include <Python.h>
^
compilation terminated.
error: command 'gcc' failed with exit status 1
#python-m pip安装标识工具包python客户端
...
gcc-pthread-fno严格别名-fmessage length=0-grecord gcc switches-O2-Wall-D_FORTIFY_SOURCE=2-fstack protector-funwind tables-fasynchronous diswind tables-g-DNDEBUG-fmessage length=0-grecord gcc switches-O2-Wall-D_FORTIFY_SOURCE=2-fstack protector-funwind tables-fasynchronous unwind tables-g-DOPENSSL_LOAD_CONF-fPIC-I/usr/include/python2.7-c src/cryptography/hazmat/bindings/uuuu pycache\uuuu/u cryptography\u cffi\u a269d620xd5c405b7.c-o build/temp.linux-x86\u 64-2.7/src/cryptography/hazmat/bindings/uuuu pycache\uu cffi\u a269d620xd4055cb7.o
src/cryptography/hazmat/bindings/\uuuuu pycache\uuuuu/\uu cryptography\u cffi\u a269d620xd5c405b7.c:2:20:致命错误:Python.h:没有这样的文件或目录
#包括
^
编译终止。
错误:命令“gcc”失败,退出状态为1
在为我的linux发行版安装了一些特定的软件包之后,我最终成功地正确安装了该软件包,但这些失败导致了我的实际问题(这些教程非常通用,我找不到任何关于GAE限制的提示)
从GAE应用程序中应该存在的唯一纯python代码来看:
Python运行时环境的所有代码必须是纯Python,并且
不包括任何必须编译的C扩展或其他代码
我没有看到GAE SDK或其第三方库中包含的identity toolkit,据我所知,这意味着我必须在自己的应用程序中使用。但是纯python代码限制也适用于这些LIB:
您可以将任何第三方库添加到应用程序中,只要
是用“纯Python”(无C扩展)或其他方式实现的
应用程序引擎运行时环境中的函数
这就是标题中的问题
我错过什么了吗
谢谢
到目前为止,我使用的是webapp2和jinja2。它们不是100%支持的第三方lib,如PyCrypto、numpy-lxml都有基于“C”的扩展,但这些都是谷歌直接支持的。你只是不能添加你自己的不在列表中 参见第三方libs文件 你必须区分谷歌支持的“第三方库”和你自己提供的第三方库 另外,您还没有说明您使用的是什么框架。您可能会发现值得一看authomatic 开箱即用支持:
- OAuth 1.0a提供商:Bitbucket、Flickr、Meetup、Plurk、Twitter、, Tumblr、UbuntuOne、Vimeo、Xero、Xing和雅虎。OAuth 2.0提供程序: 亚马逊、Behance、Bitly、Cosm、DeviantART、Eventbrite、Facebook、, Foursquare、GitHub、Google、LinkedIn、PayPal、Reddit、Viadeo、VK、, WindowsLive、Yammer和Yandex。python openid和Google应用程序引擎 基于OpenID
libraries:
- name: pycrypto
version: 2.6
经过多次挖掘,我终于把事情搞清楚了 Tim Hofman和dsalama的两个答案都适用,但真正让人大跌眼镜的是这个答案:这让我意识到第三方libs文档对于模块位于单独目录中的应用程序(典型的有文档记录的应用程序结构)不是很合适 基本上,必须根据需要为使用第三方LIB的每个模块应用销售方案:
目录(或libs本身,取决于使用的供应商方案)必须在每个模块目录中可见/可访问lib
- 每个模块都必须有自己的
文件,其中供应商代码与模块的appengine_config.py
文件并排可见,因为模块无法访问位于应用程序根目录中的文件(如果所选供应商方案依赖于该文件).yaml