我需要提前导入模块而不知道它的位置;用户将指定位置作为我的脚本的参数。
我知道我可以使用imp
进行导入,例如
import imp
foo = imp.load_source('foo', '/path/to/foo.py')
在功能上等同于
import foo
如果在PATH中找到了foo。
我如何构建类似于
的东西from foo import bar as b
答案 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
中的缓存版本。