モジュールがPythonにインポートされているかどうかをテストするにはどうすればよいですか?
たとえば、基本が必要です:
if not has_imported("sys"):
import sys
また
if not has_imported("sys.path"):
from sys import path
ありがとう!
Rgs。
コメントをありがとう。ここにコードを貼り付けた。 フォルダ内のすべてのサブモジュールを自動インポートしてから同じ名前の関数を呼び出します-python runtime inspect related
2回インポートしないことで最適化する場合は、Pythonがすでにこれを処理しているため、手間を省きます。
need thisを避けるためにNameErrors
または何かを回避する場合:ずさんなコーディングを修正します-これを必要としないことを確認してください。インポートの場合:1回、起動時、モジュールレベルで)。
正当な理由がある場合:sys.modules
は、すでにどこかにインポートされているすべてのモジュールを含む辞書です。ただし、モジュールのみが含まれており、from <module> import <variable>
の動作方法により(通常どおりモジュール全体をインポートし、そこからインポートするものを抽出します)、from sys import path
はsys
をsys.modules
に追加するだけです(まだインポートされていない場合)始めるとき)。 from pkg import module
は、おそらく期待どおりpkg.module
を追加します。
受け入れられた答えは完全に正しいとは思いません。
Pythonには、同じモジュールを複数回インポートするときのオーバーヘッドがまだあります。 Pythonエラーを出さずにそれを処理します、確かに、それは遅くならないという意味ではありません以下のURLからわかるように、モジュールを複数回インポートする場合、significantオーバーヘッドがあります。
たとえば、特定の条件以外で特定のモジュールが必要ない場合、そのモジュールが大きいか、オーバーヘッドが大きい場合は、条件に応じてのみインポートする理由があります。それは、あなたがずさんなコーダーであることを明示的に意味するものでもありません。
https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Import_Statement_Overhead
from sys import modules
try:
module = modules[module_name]
except KeyError:
__import__('m')
これは、実行時にコードを変更する私のソリューションです!