无法将python-social-auth导入Google App Engine的django项目

时间:2013-10-22 22:12:55

标签: python django google-app-engine

我通过pip安装了python-social-auth

>>> import social
>>> print social
<module 'social' from '/usr/local/lib/python2.7/dist-packages/social/__init__.pyc'>

当我尝试运行我的django项目时,它抱怨没有名为social

的模块
File "/media/PROJECT/project/BINGO/bingo/django/utils/importlib.py", line 35, in import_module __import__(name)
ImportError: No module named social.apps.django_app.default

将模块放在我要在本地使用的项目文件夹中,它可以工作:

>>> import os
>>> print os.getcwd()
/media/PROJECT/project/BINGO/bingo
>>> import social
>>> print social
<module 'social' from 'social/__init__.pyc'>

但是,现在无法找到它的依赖项

File "/media/PROJECT/project/BINGO/bingo/social/apps/django_app/default/models.py", line 2, in <module> 
   import six
ImportError: No module named six

我在全球安装了六个。如果我在本地使用六个,那么另一个依赖项openid则无法找到。我想我仍然可以继续在本地添加所有依赖项,但为什么不导入我的全局模块?

谢谢!

2 个答案:

答案 0 :(得分:4)

你真的需要阅读关于appengine的文档和沙盒。不是由sdk直接提供的所有内容(模块/库)必须包含在您的项目中。所有这些都必须与您的代码一起部署。

因此,您无法使用全局安装的模块及其依赖项。这一切都需要在您的项目中出现(安装或链接)。

我使用virtualenv --no-site-packages安装所有模块及其依赖项,然后将这些位从本地站点包中符号链接到我项目中的lib目录。

答案 1 :(得分:0)

我只找到了openid和六个依赖项。实际上,由于某种原因无法让six.py全局安装,所以只需将副本转储到每个必需的目录中。 此外,如果PY2然后导致默认导入json无声地失败,则遇到basetring转换的问题,因此不得不交换到'simplejson'。但最终还是让它发挥作用。