我的想法是这样,所以我想允许用户将代码发送到Web端点。
我想从方法中获取模块/导入。 这可能吗?
import pickle
import inspect
def add(x,y):
return x+y
def stringify_method(func):
""""""
return pickle.dumps(func)
print(pickle.loads(stringify_method(add))(1,2))
3
所以它返回3,这是预期的。
现在让我说我有更复杂的事情:
import sys
import pickle
import inspect
import arcpy
import pandas as pd
import numpy as np
def create_array(array):
return np.array(array)
def unpickle_method(func):
""""""
return pickle.dumps(func)
print(pickle.loads(stringify_method(create_array))([1,2,3,4]))
我得到的方法很好,但模块不遵循。我如何获得import numpy as np
和熊猫等??
答案 0 :(得分:3)
不完全确定您要做什么,但这有用吗?
>>> import sys
>>> import numpy as np
>>> import inspect
>>>
>>> [x[0] for x in inspect.getmembers(sys.modules[__name__], inspect.ismodule)]
['__builtins__', 'inspect', 'np', 'sys']
这让我在那里得到1/2,我需要能够从方法中获取import语句:import numpy as np
您可能会重建以下语句:
>>> [(x, y.__name__) for x,y in inspect.getmembers(sys.modules[__name__], inspect.ismodule)]
[('__builtins__', 'builtins'), ('inspect', 'inspect'), ('np', 'numpy'), ('sys', 'sys')]
(请注意('np', 'numpy')
元素告诉您import numpy as np
)