如何在App Engine上进行相对导入?(Python)

0 投票
2 回答
584 浏览
提问于 2025-04-18 07:45

我正在尝试在App Engine上使用Python进行相对导入。这里是我的基本情况:

app/
     models.py
     app.yaml
     /mymodule/
         test.py
         mymodule.yaml

我想导入models.py。基本上,我在不同的模块中使用了相同的数据存储模型,所以我希望能够从test.py(或任何其他模块)中导入models.py。

在App Engine中,相对导入是怎么工作的呢?谢谢。

编辑:我的app.yaml文件:

application: [my app name]
version: main
runtime: python27
api_version: 1
threadsafe: true

inbound_services:
- mail

builtins:
- appstats: on

handlers:

    [my handlers]

libraries:
- name: webapp2
  version: "2.5.1"

- name: jinja2
  version: latest

- name: markupsafe
  version: latest

- name: ssl
  version: latest

2 个回答

2

app文件夹下创建一个空文件,名字叫__init__.py,这样就可以把这个文件夹变成一个包了。之后你就可以像下面这样导入它:

from app import models

你可能还想在mymodule文件夹里也添加一个同样的文件。

3

我觉得解决办法是把 mymodule.yaml 文件放在 app 这个文件夹里。看起来你的代码根目录在 PYTHONPATH 里,就是你模块的 yaml 文件所在的文件夹。

撰写回答