【问题标题】:Python app engine non-standard package importPython 应用引擎非标准包导入
【发布时间】:2013-07-23 18:11:41
【问题描述】:

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

我的文件夹结构是:

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

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

__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

【问题讨论】:

  • 你把util加到sys.path了吗?
  • 实际上没有必要这样做,因为我可以访问文件夹(它们在 app.yaml 中映射)。我想我找到了答案。现在将发布。还是谢谢=D

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


【解决方案1】:

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

# in index.py
from app.handlers import my_handler

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

【讨论】:

  • 其实我的app.yaml 也住在app 里面。我相信,主要问题是由于某种原因我无法理解 main.py 中的文件 qrcode 找不到。
【解决方案2】:

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

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

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

到目前为止,我仍然无法生成图像,但我没有更多的导入错误,所以我想问题已经得到解答。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多