我如何在Python2.7中使用imp从foo导入栏作为b'?

时间:2016-08-28 10:03:32

标签: python python-2.7 python-import

我需要提前导入模块而不知道它的位置;用户将指定位置作为我的脚本的参数。

我知道我可以使用imp进行导入,例如

import imp
foo = imp.load_source('foo', '/path/to/foo.py')

在功能上等同于

import foo

如果在PATH中找到了foo。

我如何构建类似于

的东西
from foo import bar as b

1 个答案:

答案 0 :(得分:0)

正如我评论的那样,您可以使用普通属性访问从bar返回的模块对象中获取imp.load_source对象,即使在同一表达式中也是如此:

b = imp.load_source('foo', '/path/to/foo.py').bar

这与from foo import bar as b完全相同,因为load_source始终读取源文件并使用新内容创建新模块对象。 import语句只会加载模块一次,如果再次导入,则使用sys.modules中的缓存版本。