バージョン文字列を取得するために、以前に次のことを行いました。
>>> filepath = './somemodule/__init__.py'
>>> name = 'dummy'
>>> module_source = imp.load_source(name, filepath)
>>> module_source.__version__
1.0.0
が Python 3 で非推奨になったときimp
(私は 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+)そしてそこに出てきた解決策の1つは次のとおりです。
>>> loader = importlib.machinery.SourceFileLoader(name, filepath)
>>> mod = types.ModuleType(loader.name)
>>> loader.exec_module(mod)
>>> mod.__version__
1.0.0