python:相对导入的别名

flo*_*lla 4 python python-import

是否可以使用相对导入导入具有别名的同一包的模块?

说我有以下包结构:

lib/
    foobar/
        __init__.py
        foo.py
        bar.py
Run Code Online (Sandbox Code Playgroud)

而在foo.py,我想用从bar.py的东西,但我想用它作为"bar.my_function",所以不是from .bar import my_function,我试过import .bar as barimport .bar,这两者不工作(语法异常无效).我已经尝试了pythhon2.7和python3.4(后者是我的目标版本).

然而,什么工作,以及我现在使用的是import foobar.bar as bar,即绝对导入而不是相对.这是一个很好的解决方案,因为我不希望更改包名称(即使它确实如此,代码中也没有太多变化),但如果我可以使用相对导入来完成此操作会很好!

摘要:

#import .bar as bar # why not?!?
#import .bar # shot in the dark
import foobar.bar as bar # current solution
Run Code Online (Sandbox Code Playgroud)

tyn*_*ynn 7

你需要使用

from . import bar
Run Code Online (Sandbox Code Playgroud)

文件对本状态

[...]您可以使用from module import nameimport语句的形式编写显式相对导入.这些显式相对导入使用前导点来指示相对导入中涉及的当前和父包.[...]