python: 相对导入的别名
python: alias for relative import
是否可以使用相对导入的别名导入同一个包的模块?
假设我有以下包结构:
lib/
foobar/
__init__.py
foo.py
bar.py
而在 foo.py 中,我想使用 bar.py 中的一些东西,但我想将其用作 "bar.my_function",而不是 from .bar import 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 bar
documentation 声明与此有关
[...] you can write explicit relative imports with the from module import name
form of import statement. These explicit relative imports use leading dots to indicate the current and parent packages involved in the relative import. [...]
是否可以使用相对导入的别名导入同一个包的模块?
假设我有以下包结构:
lib/
foobar/
__init__.py
foo.py
bar.py
而在 foo.py 中,我想使用 bar.py 中的一些东西,但我想将其用作 "bar.my_function",而不是 from .bar import 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 bar
documentation 声明与此有关
[...] you can write explicit relative imports with the
from module import name
form of import statement. These explicit relative imports use leading dots to indicate the current and parent packages involved in the relative import. [...]