又一个python导入问题

2 投票
2 回答
1129 浏览
提问于 2025-04-16 05:48

看起来我今天在处理Python的导入时遇到了不少麻烦。我在使用Flask,并且想要整理我的应用结构。我是在Google App Engine上使用它,所以必须把Python包放在我的应用里面。它的结构大概是这样的:

-MyFolder
  -flask
  -werkzeug
  -Myapp
    - __init__.py
    -templates
    -static
    -views.py
  -blinker

目前我把blinker库导入到了Myapp的__init__文件里。但是我想把这些额外的包,比如blinker,整理到一个辅助包里,这样看起来会更整洁。

-helper
 -__init__.py
 -blinker

(blinker的__init__.py文件是这样的)

from blinker.base import.....

但是当我尝试通过下面的方式把blinker导入到Myapp的__init__时:

from helper import blinker

我遇到了一个导入错误,提示没有名为blinker.base的模块。为什么会这样呢?看起来它在寻找一个在当前包外的blinker包。为什么会出现这种情况呢?

2 个回答

0

听起来你想使用一种叫做相对导入的方式。

from .base import ...
1

sys.path.append 也可以满足你的需求。

撰写回答