我之前已经完成了以下操作来获取版本字符串:
>>> filepath = './somemodule/__init__.py'
>>> name = 'dummy'
>>> module_source = imp.load_source(name, filepath)
>>> module_source.__version__
1.0.0
现在,什么时候imp
在 Python 3 中被弃用(我在 3.7.1 上),什么是一个很好的替代品load_source
,只需要 std 库?
这对我来说似乎有点令人费解,load_module
实际上已被弃用:
>>> from importlib.machinery import SourceFileLoader
>>> loaded = SourceFileLoader(name, filepath).load_module()
>>> loaded.__version__
1.0.0
编辑#1:
这在导入任意 python 源文件中进行了讨论。(Python 3.3+)和出现的解决方案之一是:
>>> loader = importlib.machinery.SourceFileLoader(name, filepath)
>>> mod = types.ModuleType(loader.name)
>>> loader.exec_module(mod)
>>> mod.__version__
1.0.0