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

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

Susan Sarandon
リリース: 2024-12-03 03:37:09
オリジナル
1006 人が閲覧しました

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

サブモジュールをロードするための import 関数を理解する

Python では、モジュールのインポートはコードの編成と再利用において重要な役割を果たします。ただし、import 関数を使用して文字列変数からサブモジュールをインポートしようとすると、不可解な結果が生じる可能性があります。

問題:

次のコード:

import matplotlib.text as text
x = dir(text)

i = __import__('matplotlib.text')
y = dir(i)

j = __import__('matplotlib')
z = dir(j)
ログイン後にコピー

3 つのリスト x、y、およびを比較します。 z では予期せぬ違いが明らかになります。具体的には、リスト y には、リスト x に存在する matplotlib.text サブモジュールからのメイン クラスに関する情報が不足しています。

解決策:

import 機能については慎重な理解が必要です。 fromlist パラメーターに空の文字列引数を追加することで、サブモジュール自体をインポートすることを指定できます。

i = __import__('matplotlib.text', fromlist=[''])
ログイン後にコピー

これで、変数 i は matplotlib.text サブモジュールを参照し、リスト y には

あるいは、Python 3.1 以降では、importlib を使用できます。パッケージ:

import importlib

i = importlib.import_module("matplotlib.text")
ログイン後にコピー

追加メモ:

  • サブフォルダーからファイルをインポートする場合は、次の構文を使用します: importlib.import_module("feature.email ")
  • 3.3 より前の Python バージョンでは、 __init__.py ファイルのないサブフォルダーは不可能でした。

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

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