1. ホーム
  2. python

[解決済み] Pythonパッケージがインストールされているか確認する

2022-05-12 06:30:36

質問

Pythonスクリプトの中でパッケージがインストールされているかどうかを確認する良い方法は何でしょうか?私はそれがインタプリタから簡単であることを知っているが、私はスクリプトの中でそれを行う必要があります。

インストール中に作成されたディレクトリがシステム上にあるかどうかをチェックすることができると思いますが、より良い方法があるように感じます。私はSkype4Pyパッケージがインストールされていることを確認し、そうでなければそれをインストールするようにしています。

チェックを達成するための私の考え

  • 典型的なインストール パスにあるディレクトリをチェックする
  • パッケージのインポートを試み、例外が投げられたら、パッケージをインストールする。

どのように解決するのですか?

Pythonスクリプトということであれば、以下のようにすればよいでしょう。

Python 3.3+ では sys.modules と find_spec :

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")

Python 3:

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.