是否可以使用相对导入导入具有别名的相同包的模块?
说我有以下包结构:
lib/
foobar/
__init__.py
foo.py
bar.py
在foo.py中,我想使用bar.py中的内容,但我想将它用作" bar.my_function",而不是{{ 1}},我已经尝试from .bar import my_function
和import .bar as bar
,两者都不起作用(语法异常无效)。我已经尝试了pythhon2.7和python3.4(后者是我的目标版本)。
但是,什么工作,以及我现在使用的是import .bar
,即绝对导入而不是相对。这是一个很好的解决方案,因为我不希望更改包名称(即使它确实如此,代码中也没有太大的改变),但如果我这样做会很好可以使用相对导入来完成这个!
要点:
import foobar.bar as bar
答案 0 :(得分:7)
您需要使用
from module import name
有关此事件的documentation州
[...]您可以使用
recordname
形式的import语句编写显式相对导入。这些显式相对导入使用前导点来指示相对导入中涉及的当前和父包。 [...]