如何检查Python包是否安装

目录

How to Check if a Python package is installed

  1. 检查是否安装了Python包
  2. 如果尚未安装模块,请安装该模块
  3. 使用 find_spec 检查是否安装了 Python 包
  4. 如果尚未安装该软件包,则安装该软件包
  5. 检查模块是否未安装

检查Python包是否安装

检查Python包是否已安装:

  1. 将包导入到try块中。
  2. 使用except块来处理电位ModuleNotFoundError
  3. 如果该try块成功运行,则该模块已安装。
主要.py
try: import requests print('The requests module is installed') except ModuleNotFoundError: print('The requests module is NOT installed')
确保替换requests为您的特定模块的名称。

我们使用
try/ except 块来检查模块是否已安装。

如果该try块没有引发异常,则该模块已安装。

如果未安装该模块,ModuleNotFoundError则会引发错误并运行 except 块。

如果尚未安装模块,则安装该模块

try/except如果未安装模块,您还可以扩展该语句来安装该模块。

主要.py
import sys import subprocess try: import requests print('The requests module is installed') except ModuleNotFoundError: print('The requests module is NOT installed') # 👇️ optionally install module python = sys.executable subprocess.check_call( [python, '-m', 'pip', 'install', 'requests'], stdout=subprocess.DEVNULL ) finally: import requests

如果您需要检查是否使用 来安装软件包pip,请使用该pip show
命令。

pip show requests

检查是否使用 pip 安装了模块

pip show module_name命令将声明该软件包未安装,或者显示有关该软件包的大量信息,包括该软件包的安装位置。

您还可以使用以下一行命令。

python -c 'import pkgutil; print(1 if pkgutil.find_loader("module_name") else 0)'

确保替换module_name为您正在检查的模块的实际名称。

1如果模块已安装,则该命令将返回,0如果未安装,则该命令将返回,但这可以轻松调整。

使用 find_spec 检查是否安装了 Python 包

另一种方法是使用该importlib.util.find_spec方法。

find_spec()如果模块已安装,该方法将返回一个spec对象,否则None返回。

主要.py
import importlib.util module_name = 'requests' spec = importlib.util.find_spec(module_name) if spec: print(f'The {module_name} module is installed') else: print(f'The {module_name} module is NOT installed')

importlib.util.find_spec方法

查找模块的规范。

模块的规范是一个命名空间,其中包含用于加载模块的导入相关信息。

如果未找到规范,该方法将返回 None

如果尚未安装该软件包,则安装该软件包

如果尚未安装该软件包,您可以选择安装该软件包。

主要.py
import importlib.util import sys import subprocess module_name = 'requests' spec = importlib.util.find_spec(module_name) if spec: print(f'The {module_name} module is installed') else: print(f'The {module_name} module is NOT installed') # 👇️ optionally install the module if it's not installed python = sys.executable subprocess.check_call( [python, '-m', 'pip', 'install', 'requests'], stdout=subprocess.DEVNULL )

检查模块是否未安装

如果您需要检查模块是否未安装,请检查变量是否spec存储了None值。

主要.py
import importlib.util import sys import subprocess module_name = 'requests' spec = importlib.util.find_spec(module_name) if spec is None: print(f'The {module_name} module is NOT installed') # 👇️ optionally install the module if it's not installed python = sys.executable subprocess.check_call( [python, '-m', 'pip', 'install', 'requests'], stdout=subprocess.DEVNULL ) print(f'The {module_name} module is now installed')

您选择哪种方法取决于个人喜好。我会使用这个
try/except声明,因为我发现它非常直接且易于阅读。

额外资源

您可以通过查看以下教程了解有关相关主题的更多信息: