几种查看PyTorch、cuda 和 Python 版本方法
在检查 PyTorch、cuda 和 Python 版本时,除了直接使用 torch.__version__
和 sys.version
,我们还可以通过其他方式实现相同的功能
方法 1:直接访问属性(原始代码)
import torch
import sysprint("PyTorch Version: {}".format(torch.__version__))
print("Python Version: {}".format(sys.version))
特点:
- 简单直接,无需额外依赖。
- 适用于快速检查版本信息。
方法 2:通过命令行工具
如果希望在脚本外部检查版本,可以直接使用命令行工具。
Python 版本
python --version
# 或
python -V
PyTorch 版本
python -c "import torch; print(torch.__version__)"
特点:
- 适用于脚本外部检查,无需编写 Python 代码。
- 可以集成到 CI/CD 流程中。
方法 3:使用 torch.version
模块
PyTorch 提供了一个 torch.version
模块,可以获取更详细的版本信息。
import torch
import sys# 获取 PyTorch 版本信息
print("PyTorch Version: {}".format(torch.version.__version__)) # 或直接使用 torch.__version__
print("PyTorch CUDA Version: {}".format(torch.version.cuda)) # 获取 CUDA 版本
print("PyTorch cuDNN Version: {}".format(torch.backends.cudnn.version())) # 获取 cuDNN 版本# Python 版本
print("Python Version: {}".format(sys.version))
特点:
- 可以获取 CUDA 和 cuDNN 的版本信息,对于调试 GPU 环境非常有用。
torch.version
提供了更细粒度的版本控制。
方法 4:使用 pkg_resources
pkg_resources
是 setuptools
提供的一个工具,可以查询已安装包的版本信息。
import pkg_resources# 获取 PyTorch 版本
try:pytorch_version = pkg_resources.get_distribution("torch").versionprint("PyTorch Version: {}".format(pytorch_version))
except pkg_resources.DistributionNotFound:print("PyTorch is not installed.")# Python 版本仍通过 sys 模块
import sys
print("Python Version: {}".format(sys.version))
特点:
- 可以查询任何已安装包的版本,而不仅仅是 PyTorch。
- 如果包未安装,会捕获
DistributionNotFound
异常。
方法 5:使用 platform
模块(补充 Python 信息)
虽然 sys.version
已经提供了 Python 版本信息,但 platform
模块可以提供更详细的系统信息。
import torch
import platformprint("PyTorch Version: {}".format(torch.__version__))
print("Python Version: {}".format(platform.python_version()))
print("Platform: {}".format(platform.platform()))
特点:
platform.platform()
提供了操作系统的详细信息。- 适用于需要记录系统环境的场景。
方法 6:结合 subprocess
调用命令行
如果需要在 Python 脚本中调用外部命令行工具,可以使用 subprocess
模块。
import subprocessdef get_python_version():result = subprocess.run(["python", "--version"], capture_output=True, text=True)return result.stdout.strip()def get_pytorch_version():result = subprocess.run(["python", "-c", "import torch; print(torch.__version__)"], capture_output=True, text=True)return result.stdout.strip()print("Python Version: {}".format(get_python_version()))
print("PyTorch Version: {}".format(get_pytorch_version()))
特点:
- 适用于需要从外部命令行获取信息的场景。
- 可以灵活地调用其他命令行工具。
方法 7:使用 torch.utils.collect_env
PyTorch 提供了一个 torch.utils.collect_env
工具,可以收集详细的系统环境信息,包括 PyTorch、Python、CUDA、cuDNN 等。
import torchenv_info = torch.utils.collect_env()
print(env_info)
特点:
- 提供全面的环境信息,适合用于调试和问题报告。
- 输出格式为字典,可以进一步处理。
总结
方法 | 优点 | 缺点 |
---|---|---|
直接访问属性 | 简单直接,无需额外依赖 | 功能有限,仅能获取基本版本信息 |
PyTorch | ||
通过命令行工具 | 适用于脚本外部检查,无需编写 Python 代码 | 需要手动执行命令 |
使用 torch.version | 提供更详细的版本信息(CUDA、cuDNN) | 仅适用于 |
使用 pkg_resources | 可以查询任何已安装包的版本 | 需要额外依赖 setuptools |
使用 platform 模块 | 提供详细的系统信息 | 功能与 sys 模块部分重叠 |
结合 subprocess | 灵活调用外部命令行工具 | 实现复杂,性能可能较低 |
使用 torch.utils.collect_env | 提供全面的环境信息,适合调试 | 输出格式复杂,需要进一步处理 |