如何加载用户代码?

时间:2013-02-28 06:10:11

标签: python python-3.x

我有一个程序可以自动从用户提供的JSON代码生成数据结构。我还想提供一个选项,允许用户编写自己的函数来以编程方式生成此数据结构。有没有办法让Python按路径加载任意模块并返回该模块的命名空间,以便我可以从我的程序中调用用户的函数?

示例,我想要以下内容:

def make(custom):
    if not custom:
        return helper('example.json')
    else:
        return load('path/to/user-script.py').make()  # this line here

1 个答案:

答案 0 :(得分:1)

您可以使用.py导入已命名的imp.load_source文件,就好像它是一个模块一样;见this question

这通常是一件非常奇怪的事情,但加载不在Python模块层次结构中的用户钩子似乎是一个好的借口。 :)


This Python bug声称{3}在Python 3中已经过时,并建议稍微麻烦和不太明显的调用:

load_source
相关问题