Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google Identity Toolkit(v3)是否与GAE/python沙盒兼容?_Python_Google App Engine_Google Identity Toolkit - Fatal编程技术网

Google Identity Toolkit(v3)是否与GAE/python沙盒兼容?

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

我正在为一个网站开发一个PythonGAE应用程序,并试图让联邦登录进入其中

根据调查,网站的最佳解决方案似乎是。浏览了我能找到的所有相关文档,然后转到教程,在那里我遇到了一个问题-安装
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
根据来自Identity Toolkit论坛的消息,您可以通过包含PyCrypto v2.6或更高版本,在App Engine沙箱中使用Identity Toolkit

为此,请将以下内容添加到app.yaml文件中:

libraries:
- name: pycrypto
  version: 2.6

经过多次挖掘,我终于把事情搞清楚了

Tim Hofman和dsalama的两个答案都适用,但真正让人大跌眼镜的是这个答案:这让我意识到第三方libs文档对于模块位于单独目录中的应用程序(典型的有文档记录的应用程序结构)不是很合适

基本上,必须根据需要为使用第三方LIB的每个模块应用销售方案:

  • lib
    目录(或libs本身,取决于使用的供应商方案)必须在每个模块目录中可见/可访问
  • 每个模块都必须有自己的
    appengine_config.py
    文件,其中供应商代码与模块的
    .yaml
    文件并排可见,因为模块无法访问位于应用程序根目录中的文件(如果所选供应商方案依赖于该文件)

这是一个问题,而不是一个声明:)是的,我浏览了谷歌支持的库的列表,但没有看到其中任何一个出现编译错误的库。我正在使用webapp2。至少现在,我试图远离复杂的框架和包装,因为我首先需要理解事物的基础,而且因为IHO增加的复杂性、依赖性、维护等的成本往往超过了好处。但那只是我:)无论如何,我想需要更多的挖掘。