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のバグは、Python 3で廃止されたと主張してload_sourceおり、やや面倒でわかりにくい呼び出しをアドバイスしています。

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