ホームページ > バックエンド開発 > Python チュートリアル > `__import__` が Matplotlib サブモジュールを完全にインポートできないのはなぜですか?それを修正するにはどうすればよいですか?

`__import__` が Matplotlib サブモジュールを完全にインポートできないのはなぜですか?それを修正するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-08 06:58:11
オリジナル
871 人が閲覧しました

Why Does `__import__` Fail to Fully Import Matplotlib Submodules, and How Can I Fix It?

「__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)
ログイン後にコピー

メモ:

  • サブフォルダー (例: ./feature/email.py) を含むインポートの場合は、importlib.import_module を使用します。 ("feature.email").
  • 以前の Python バージョンの場合3.3 では、インポートされたファイルのフォルダー内に __init__.py ファイルが必要でした。ただし、3.3 以降、この要件は削除されました。

以上が`__import__` が Matplotlib サブモジュールを完全にインポートできないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート