try: module_file_rest1 = "/".join([platform_path, "plugins", "fwmgrutil.py"]) module_rest1 = imp.load_source("fwmgrutil", module_file_rest1) except IOError as e: log_error("Failed to load platform module '%s': %s" % ("fwmgrutil", str(e)), True) return -1 try: platform_psuutil_class1 = getattr(module_rest1, "FwMgrUtil") platform_test = platform_psuutil_class1() except AttributeError as e: log_error("Failed to instantiate '%s' class: %s" % (PLATFORM_REST_CLASS_NAME, str(e)), True) return -2这块代码改用python3.9实现
时间: 2024-02-28 09:57:01 浏览: 161
在 Python 3.9 中,`imp` 模块已经被标记为过时,建议使用 `importlib` 模块中的相关函数代替。
下面是使用 `importlib` 模块重写的代码:
```python
import importlib.util
try:
module_file_rest1 = "/".join([platform_path, "plugins", "fwmgrutil.py"])
spec = importlib.util.spec_from_file_location("fwmgrutil", module_file_rest1)
module_rest1 = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module_rest1)
except IOError as e:
log_error("Failed to load platform module '%s': %s" % ("fwmgrutil", str(e)), True)
return -1
try:
platform_psuutil_class1 = getattr(module_rest1, "FwMgrUtil")
platform_test = platform_psuutil_class1()
except AttributeError as e:
log_error("Failed to instantiate '%s' class: %s" % (PLATFORM_REST_CLASS_NAME, str(e)), True)
return -2
```
与原始代码相比,主要的改动在于使用了 `importlib` 模块中的 `spec_from_file_location()`、`module_from_spec()` 和 `loader.exec_module()` 函数来实现模块的动态加载。同时,由于 `imp` 模块不再推荐使用,因此代码中将其替换为了 `importlib` 模块。
阅读全文