Python 3(toga)用のUIライブラリ用の静的ドキュメントジェネレータを作成しようとしています。プロジェクト内モジュールの属性をインポートせずに検査する方法
のサブディレクトリがあります
iOS
setup.py
toga_iOS
__init__.py
app.py
mac
setup.py
toga_mac
__init__.py
app.py
私は、ディレクトリを反復処理し、toga_x
モジュールで__all__
属性の値を取得したいです。私が持っている問題は、各モジュールがそのプラットフォームにインストールされるように設計されていることです。 Windowsの1は、Mac上でWindows、Mac上でインストールするPythonパッケージを必要とするなど
私はのimportlibか__import__
を使用している場合__init__.py
の各ファイル内では、プラットフォーム固有のパッケージをインポートしますので、それは例えば、失敗しました
PLATFORM_LIST = {
'android': 'Android',
'cocoa': 'Mac OS cocoa',
'gtk': 'GTK +'
}
for module, label in PLATFORM_LIST.items():
print(module)
sys.path.append(os.path.join('../src',
module))
module = importlib.import_module('toga_'+module)
sys.modules[module] = module
_all = getattr(module, '__all__')
"ImportError:No android 'という名前のモジュールがありません。
多くのオプション、ast、pylint、compile、inspectlibがあります。すべての依存モジュールをインストールすることなく__all__
の値を取得するための最良の方法はどれですか?
'__all__'が動的に作成される場合はどうなりますか?(必ずしも異なるプラットフォームでは異なるわけではありませんが、単一の代入ステートメントより多くなる可能性があります) –
サポートするAPIを文書化する方法として、各パッケージで静的に宣言されています。 –