'str' 对象没有属性 'exec_module'

'str' object has no attribute 'exec_module'

我正在尝试在 google colab 中使用 importlib 将 test.py 文件中的脚本代码作为模块导入。 这是我的代码:

def load_module(file_name, module_name):
    spec = importlib.util.spec_from_loader(module_name, file_name)
    module = importlib.util.module_from_spec(spec)
    print(spec.loader)
    spec.loader.exec_module(module)
    sys.modules[module_name] = module
    return module
def get_file(path):
    SCRIPT_FILE = open(path,'r')
    return SCRIPT_FILE

我运行上面的函数用于从test.py

获取lib
file =get_file('/content/gdrive/MyDrive/test/test.py')
module = load_module("from lib import *\n" + file.read(),'crawl')

我遇到了这个错误

AttributeError: 'str' object has no attribute 'exec_module'

请帮忙!谢谢

在第 2 行中,您为第二个函数参数传入类型 string 而不是类型 Loader。如果您查看 documentation,加载程序似乎没有根据您的路径生成:

spec = importlib.util.spec_from_loader(module_name, file_name)

Here 是使用 spec_from_loader 的示例实现,通过使用 ExtensionFileFinder.

生成加载程序

但是,对于您的用例,您可以尝试使用spec_from_file_location? This way, you can see if it can generate your spec based on the file path you passed in. Try passing the path into the location参数吗?