対話中にモジュールを再インポートする 質問する

対話中にモジュールを再インポートする 質問する

モジュールを再インポートするにはどうすればよいですか? .py ファイルに変更を加えた後にモジュールを再インポートしたいです。

ベストアンサー1

Python 3.4+の場合:

import importlib
importlib.reload(nameOfModule)

Python < 3.4の場合:

reload(my.module)

からPython ドキュメント

以前にインポートしたモジュールを再ロードします。引数はモジュール オブジェクトである必要があるため、以前に正常にインポートされている必要があります。これは、外部エディターを使用してモジュール ソース ファイルを編集し、Python インタープリターを終了せずに新しいバージョンを試したい場合に便利です。

この方法を使用する際の注意事項を忘れないでください:

  • モジュールが再ロードされると、その辞書 (モジュールのグローバル変数を含む) は保持されます。名前の再定義は古い定義を上書きするため、通常は問題にはなりませんが、モジュールの新しいバージョンが古いバージョンで定義された名前を定義していない場合、古い定義は削除されません。

  • モジュールが を使用して別のモジュールからオブジェクトをインポートする場合from ... import ...reload()他のモジュールを呼び出しても、そこからインポートされたオブジェクトは再定義されません。この問題を回避する 1 つの方法は、ステートメントを再実行することです。もう 1 つの方法は、代わりにと修飾名 ( )fromを使用することです。importmodule.*name*

  • モジュールがクラスのインスタンスをインスタンス化する場合、クラスを定義するモジュールを再ロードしてもインスタンスのメソッド定義には影響しません。古いクラス定義が引き続き使用されます。派生クラスについても同様です。

おすすめ記事