Python app引擎非标准包导入

时间:2013-07-23 18:11:42

标签: python google-app-engine import module package

我需要一个名为qrcode的非标准App Engine包。它是纯粹的python lib,仅依赖于App引擎支持的PIL。

我的文件夹结构是:

app
|--- handlers/
|------ my_handler.py
|--- util/
|------ __init__.py
|------ qrcode/
|--------- __init__.py
|--------- qrcode/
|------------ __init__.py
|------------ other lib files
|--- index.py

index.py上我映射到my_handler.pymy_handler.py我在其中一个处理程序类的get方法中调用from util.qrcode import qrcode。问题是我在ImportError: No module named qrcode.main文件上获得了__init__.py

__init__.py:

from qrcode.main import QRCode, make
from qrcode.constants import *
from qrcode import image

qrcode.mainqrcode包中的一个.py文件(查看整个。{ 包,检查存储库链接here

我已经看了,我找不到有什么问题。我很感激你的帮助。谢谢!

我搜索的其他问题:
AppEngine server cannot import atom module
Import custom package in python google app engine
Importing nested modules in Python

2 个答案:

答案 0 :(得分:0)

Python路径将包含app.yaml所在的目录。如果那是您的app模块所在的位置,那么您应该使用绝对导入:

# in index.py
from app.handlers import my_handler

# in my_handler.py
from app.util.qrcode import qrcode

答案 1 :(得分:0)

由于某种原因(我不知道),包裹不知道自己的名字。为了使其工作,我不得不删除包文件上对 qrcode 的所有引用。我新的__init__.py导入成为:

from main import QRCode, make
from constants import *
import image

所有.py文件的导入都需要更改,我必须在PIL中包含app.yaml(之前我忘记了,但从来没有足够的面对这个错误= P)。< / p>

到现在为止我还是无法生成图像,但我没有更多的导入错误,所以我想这个问题已经回答了。谢谢!