我想模拟导入模块 (ResourceX) 的 MyApp,该模块需要当时不可用且无法运行的资源。
一个解决方案是制作并导入 ResourceX 的模拟模块(名为 ResourceXSimulated),并将其作为 ResourceX 转移到 MyApp。我想这样做是为了避免破坏大量代码并从 MyApp 获取各种异常。
我正在使用 Python,它应该是这样的:
“将 ResourceXSimulated 导入为 ResourceX”
“ResourceX.getData()”,实际调用的是ResourceXSimultated.getData()
期待了解 Python 是否支持这种重定向。
干杯。
附加信息:我可以访问源文件。
更新:我正在考虑向 MyApp 添加尽可能少的关于使用假模块的代码,并将此代码添加到导入语句附近。
最佳答案
只需将 MyApp
中的所有行 import ResourceX
更改为 import ResourceXSimulated as ResourceX
,以及 from ResourceX import Y
code> 到 from ResourceXSimulated import Y
。
但是,如果无法访问 MyApp
源代码或有其他原因无法更改它,您可以将模块放入 sys.modules
之前 MyApp
自行加载:
import ResourceXSimulated
sys.modules['ResourceX'] = ResourceXSimulated
注意:如果 ResourceX
是一个包,它可能需要更多的努力。
关于python - 是否可以在 python 中转移模块? (ResourceX 转为 ResourceXSimulated),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443173/