2

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

例如,我想要以下内容:

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

1 回答 1

1

您可以使用;导入命名.py文件,就好像它是一个模块一样。imp.load_source看到这个问题

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


这个 Python 错误声称load_source在 Python 3 中已过时,并建议使用更繁琐且不太明显的调用:

importlib.SourceFileLoader(name, path).load_module(name)
于 2013-02-28T06:18:48.100 回答