是否可以使用相对导入的方式,为同一包中的模块设置别名?
比如我有以下的包结构:
lib/
foobar/
__init__.py
foo.py
bar.py
在foo.py中,我想使用来自bar.py的某些内容,但我想将其用作“bar.my_function”,因此我尝试了
import .bar as bar
和import .bar
,但都不起作用(无效的语法异常)。我尝试过python2.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
from . import long_module_name as bar
(我花了很长时间搜索问题和文档才找到这个!)。与Python 2中的隐式相对导入让您只需执行import long_module_name as bar
相比,它有点笨拙,但至少仍然作为一种选择可用。 - JDM