「__import__」を使用した文字列変数からのモジュールのインポート
matplotlib (MPL) ライブラリ内の特定のサブモジュールを文書化しようとすると、次のようになります。これらのサブモジュールを文字列からインポートするために必要です。ただし、「__import__」関数を使用すると、標準のインポート ステートメントと比較して予期しない結果が生じる可能性があります。
問題:
「__import__」を使用したサブモジュールのインポート (例: __import__( 'matplotlib.text')) は、サブモジュールの内容を期待どおりに完全にはロードしません。 "__import__" と通常のインポートの両方から取得した属性のリストを比較すると、"__import__" には無関係な要素とともに matplotlib からの基本定義が含まれていますが、ターゲット サブモジュールからの重要なクラスが欠けていることが明らかです。
解決策:
「__import__」を使用して文字列からサブモジュールをロードするには、次のように指定します2 番目の引数として空のリスト (fromlist):
import matplotlib.text as text x = dir(text) i = __import__('matplotlib.text', fromlist='') y = dir(i)
この改訂されたコードは、目的のサブモジュールを効果的にロードし、期待される属性のリストを生成します。
あるいは、Python バージョン 3.1 以降では、 、importlibを利用できますmodule:
import importlib i = importlib.import_module("matplotlib.text") y = dir(i)
メモ:
以上が`__import__` が Matplotlib サブモジュールを完全にインポートできないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。