目录
How to Check if a Python package is installed
检查Python包是否安装
检查Python包是否已安装:
- 将包导入到
try
块中。 - 使用
except
块来处理电位ModuleNotFoundError
。 - 如果该
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 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
声明,因为我发现它非常直接且易于阅读。
额外资源
您可以通过查看以下教程了解有关相关主题的更多信息: