Python スクリプト内でパッケージがインストールされているかどうかを確認する良い方法は何ですか? インタープリターから簡単に実行できることはわかっていますが、スクリプト内で実行する必要があります。
インストール中に作成されたディレクトリがシステム上にあるかどうか確認することもできると思いますが、もっと良い方法があると思います。Skype4Py パッケージがインストールされていることを確認し、インストールされていない場合はインストールします。
チェックを達成するための私のアイデア
- 通常のインストールパス内のディレクトリを確認する
- パッケージをインポートして例外がスローされた場合はパッケージをインストールします
ベストアンサー1
Python スクリプトを意味する場合は、次のようにします。
Python 3.3以降ではsys.modulesを使用し、スペック検索:
import importlib.util
import sys
# For illustrative purposes.
name = 'itertools'
if name in sys.modules:
print(f"{name!r} already in sys.modules")
elif (spec := importlib.util.find_spec(name)) is not None:
# If you choose to perform the actual import ...
module = importlib.util.module_from_spec(spec)
sys.modules[name] = module
spec.loader.exec_module(module)
print(f"{name!r} has been imported")
else:
print(f"can't find the {name!r} module")
Python3:
try:
import mymodule
except ImportError as e:
pass # module doesn't exist, deal with it.
Python 2:
try:
import mymodule
except ImportError, e:
pass # module doesn't exist, deal with it.