1

我通过 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如果我在本地使用六个,则找不到另一个依赖项 , 。我想我仍然可以继续在本地添加所有依赖项,但为什么不导入我的全局模块?

谢谢!

4

2 回答 2

4

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

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

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

于 2013-10-23T00:46:02.397 回答
0

我只找到了openid和六个依赖项。实际上,由于某种原因,无法全局安装 Six.py,因此只需将副本转储到每个所需的目录中。此外,如果 PY2 遇到基本字符串转换问题,则会导致默认导入 json 静默失败,因此必须切换到“simplejson”。但最后,让它工作。

于 2013-12-09T20:19:42.447 回答