python:如何将模块a.b导入为a_.b?

时间:2013-09-11 01:36:01

标签: python python-import

我有一个包a,树是:

a/
  /__init__.py
  /b.py

我怎样才能import a.b as a_.b

2 个答案:

答案 0 :(得分:5)

你必须分两行:

import a as a_
from a import b

print(a_.b)
# <module 'a.b' from '.\\a\\b.py'>

或者:

import a as a_
import a.b

print(a_.b)
# <module 'a.b' from '.\\a\\b.py'>

第一个缺点是它将b放入你的命名空间,第二个缺点是它将a放入你的命名空间。如果您愿意,可以分别使用del bdel a来解决此问题。

或者,您也可以分别将第二行写为from a import b as _import a.b as _,这会阻止ba出现在您的命名空间中。

答案 1 :(得分:0)

执行此操作的一种方法是在sys.modules字典中注册名称a_:

import sys
import a as a_
sys.modules['a_'] = a_
import a_.b


警告:执行此操作会为此python会话全局注册a_,因此尝试import a_的任何其他模块都将以a结束。

对于您的特定情况,由于全球影响,这可能是一个不好的方法。但是,当需要全局重命名时,这可能很有用。